Advertisement
Vladislav8653

1st form

Jan 13th, 2023 (edited)
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 7.67 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Menus;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Label1: TLabel;
  12.     Edit1: TEdit;
  13.     Label2: TLabel;
  14.     Button1: TButton;
  15.     MainMenu1: TMainMenu;
  16.     N1: TMenuItem;
  17.     N2: TMenuItem;
  18.     N3: TMenuItem;
  19.     Label3: TLabel;
  20.     PopupMenu1: TPopupMenu;
  21.     OpenDialog1: TOpenDialog;
  22.     SaveDialog1: TSaveDialog;
  23.     N4: TMenuItem;
  24.     N5: TMenuItem;
  25.     procedure Button1Click(Sender: TObject);
  26.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);
  27.     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  28.     procedure N3Click(Sender: TObject);
  29.     procedure Edit1Change(Sender: TObject);
  30.     procedure N2Click(Sender: TObject);
  31.     procedure N4Click(Sender: TObject);
  32.     procedure N5Click(Sender: TObject);
  33.  
  34.   private
  35.     { Private declarations }
  36.   public
  37.     { Public declarations }
  38.   end;
  39.  
  40. var
  41.   Form1: TForm1;
  42.   N, K : Integer;
  43.   IsFileOpen : Boolean;
  44.   Path, Result : String;
  45.  
  46. implementation
  47.  
  48. {$R *.dfm}
  49.  
  50. procedure TForm1.Button1Click(Sender: TObject);
  51. Var
  52.     Age, Diff : Integer;
  53.     Str : String;
  54. Const
  55.     BORDER_AGE = 18;
  56.     REAL_OLD = 116;
  57. Begin
  58.     Age := StrToInt(Edit1.Text);
  59.     If (Age > REAL_OLD) then
  60.     Begin
  61.         MessageBox(Form1.Handle, PChar('116 лет - максимальная официально зарегистрированная продолжительность жизни человека. Введите Ваш реальный возраст.'), 'Ошибка', MB_ICONSTOP);
  62.         Edit1.Clear;
  63.         Label2.Caption := '';
  64.         Label3.Caption := '';
  65.     End
  66.     Else
  67.     Begin
  68.         If (Age < BORDER_AGE) then
  69.         Begin
  70.             Diff := BORDER_AGE - Age;
  71.             Str := 'Вам будет предоставлено право голосовать через ';
  72.             Str := ConCat(Str, IntToStr(Diff));
  73.             If Diff > 4 then
  74.               Str := ConCat(Str, ' лет')
  75.             Else If Diff = 1 then
  76.               Str := ConCat(Str, ' год')
  77.             Else
  78.               Str := ConCat(Str, ' года');
  79.             Label2.Caption := Str;
  80.             Label3.Caption := '';
  81.             Result := Label2.Caption
  82.         End
  83.         Else
  84.         Begin
  85.             Label3.Caption := 'Вы имеете право голосовать!';
  86.             Label2.Caption := '';
  87.             Result := Label3.Caption;
  88.         End;
  89.     End;
  90.     N4.Enabled := True;
  91. end;
  92.  
  93.  
  94.  
  95. procedure TForm1.Edit1Change(Sender: TObject);
  96. begin
  97.     N4.Enabled := False;
  98.     If ((Length(Edit1.Text) = 0)) then
  99.         Button1.Enabled := False
  100.     Else
  101.         Button1.Enabled := True;
  102.     Label2.Caption := '';
  103.     Label3.Caption := '';
  104. end;
  105.  
  106. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
  107. begin
  108.     If ((Key = #13) And (Button1.Enabled)) Then
  109.         Button1.Click;  //enter теперь нажимает кнопку
  110.     If (Not(Key In ['0'..'9', #08, #46])) Then
  111.         Key := #0; // можно только backspace, delete и 0..9
  112.     If ((Length(Edit1.Text) = 0) and (Key = '0')) Then
  113.         Key := #0; // первая цифра как нуль - нельзя
  114.     If ((Key = #08) or (Key = #46)) then
  115.     Begin
  116.         Label3.Caption := '';
  117.         Label2.Caption := ''; // если стираем что-то, то label очищаются
  118.     End;
  119.     If ((Length(Edit1.Text) = 2) and (StrToInt(Edit1.Text) <> 10)) then
  120.         If (Not(Key In ['0'..'6', #08, #46])) Then
  121.             Key := #0;
  122.     // если длина текста в едит равна 2 и не равна 10, а значит равна 11
  123.     // т.к. более 11 покрывает уже другое условие
  124.     // то можно ввести только 1..6 (прим: 115, 116)
  125.     If ((Length(Edit1.Text) = 2) and (StrToInt(Edit1.Text) > 11)) then
  126.         If Not(Key in [#08, #46]) then
  127.             Key := #0;
  128.     //если 12 и больше, то больше ничего нельзя вводить
  129. end;
  130.  
  131. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  132. begin
  133.     CanClose := MessageBox(Form1.Handle, 'Вы уверены, что хотите выйти?', 'Выход', MB_YESNO + MB_ICONQUESTION)=ID_YES;
  134. end;
  135.  
  136. procedure TForm1.N2Click(Sender: TObject);
  137. begin
  138.      Application.MessageBox('Программа запрашивает возраст пользователя.'#13#10'Если ему не менее 18, сообщает о том, что он имеет право голосовать.'#13#10'В противном случае вычисляет, через сколько лет пользователю будет предоставлено это право.'#13#10''#13#10' Введите число от 1 до 116. ', 'Инструкция', 0);
  139. end;
  140.  
  141.  
  142. Function CheckFileData(Num: String): Boolean;
  143. Const
  144.     MAX_LIM = 116;
  145.     MIN_LIM = 1;
  146. Var
  147.     NewNum: Integer;
  148.     IsCorrect: Boolean;
  149. Begin
  150.     NewNum := 0;
  151.     IsCorrect := True;
  152.     Try
  153.         NewNum := StrToInt(Num);
  154.     Except
  155.         MessageBox(Form1.Handle, Pchar('Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
  156.         IsCorrect := False;
  157.     End;
  158.     If(IsCorrect And ((NewNum > MAX_LIM) Or (NewNum < MIN_LIM))) Then
  159.     Begin
  160.         Num := IntToStr(NewNum);
  161.         MessageBox(Form1.Handle, Pchar('Недопустимое значение!'), 'Ошибка', MB_ICONSTOP);
  162.         IsCorrect := False;
  163.     End;
  164.     CheckFileData := IsCorrect;
  165. End;
  166.  
  167.  
  168.  
  169.  
  170. Function Open () : String;
  171. Begin
  172.     With Form1 Do
  173.     Begin
  174.         If OpenDialog1.Execute Then
  175.         Begin
  176.             Path := OpenDialog1.FileName;
  177.             IsFileOpen := True;
  178.         End
  179.         Else
  180.             IsFileOpen := False;
  181.     End;
  182.     Open := Path;
  183. End;
  184.  
  185. Function TakeDataFromFile(Side: String; Var FileOutput: TextFile): String;
  186. Var
  187.     IsRight : Boolean;
  188. Begin
  189.     IsRight := True;
  190.     Try
  191.         Read(FileOutput, Side);
  192.         IsRight := CheckFileData(Side);
  193.     Except
  194.     End;
  195.     If(Not(IsRight)) Then
  196.         TakeDataFromFile := ''
  197.     Else
  198.         TakeDataFromFile := Side;
  199. End;
  200.  
  201.  
  202. procedure TForm1.N3Click(Sender: TObject);
  203. Var
  204.     FileInput: TextFile;
  205.     Num : Integer;
  206.     Str : String;
  207. begin
  208.     Num := 0;
  209.     Path := Open;
  210.     AssignFile(FileInput, Path);
  211.     Reset(FileInput);
  212.     If(IsFileOpen) Then
  213.         Str := TakeDataFromFile(IntToStr(Num), FileInput);
  214.     if (Length(Str) > 0) then
  215.     Begin
  216.         Edit1.Text := Str;
  217.     End
  218.     Else
  219.         Edit1.Text := #0;
  220.     CloseFile(FileInput);
  221. end;
  222.  
  223.  
  224. procedure TForm1.N4Click(Sender: TObject);
  225. Var
  226.     FileOutput: TextFile;
  227.     IsCorrect : Boolean;
  228. begin
  229.     IsCorrect := True;
  230.     Path := Open;
  231.     If (IsFileOpen) Then
  232.     Begin
  233.         try
  234.             AssignFile(FileOutput, Path);
  235.             Rewrite(FileOutput);
  236.             Write(FileOutput, Result);
  237.         except
  238.             IsCorrect := False;
  239.             Application.MessageBox('Запись в файл не удалась.', 'Ошибка', MB_ICONSTOP);
  240.         end;
  241.         if IsCorrect then
  242.         Begin
  243.             Application.MessageBox('Запись файла выполнена успешно.', 'Результат', 0);
  244.             CloseFile(FileOutput);
  245.             Label3.Caption := '';
  246.             Label2.Caption := '';
  247.             Edit1.Text := '';
  248.         End;
  249.     End;
  250. end;
  251.  
  252. procedure TForm1.N5Click(Sender: TObject);
  253. begin
  254.     Application.MessageBox('Арефин Владислав гр.251004', 'Разрабочик', 0);
  255. end;
  256.  
  257. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement