Advertisement
gguuppyy

формашкольника11

Feb 2nd, 2024
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 11.36 KB | Source Code | 0 0
  1. Unit Main;
  2.  
  3. Interface
  4.  
  5. Uses
  6.     Winapi.Windows,
  7.     Winapi.Messages,
  8.     System.SysUtils,
  9.     System.Variants,
  10.     System.Classes,
  11.     Vcl.Graphics,
  12.     Vcl.Controls,
  13.     Vcl.Forms,
  14.     Vcl.Dialogs,
  15.     Vcl.StdCtrls,
  16.     Vcl.Menus,
  17.     Vcl.ExtCtrls,
  18.     Vcl.Imaging.Pngimage,
  19.     System.Actions,
  20.     Vcl.ActnList;
  21.  
  22. Type
  23.     TMainForm = Class(TForm)
  24.         Button1: TButton;
  25.         EditKoefX: TEdit;
  26.         EditKoefY: TEdit;
  27.         MainMenu1: TMainMenu;
  28.         FileTab: TMenuItem;
  29.         InstructionTab: TMenuItem;
  30.         OpenOption: TMenuItem;
  31.         SaveOption: TMenuItem;
  32.         DeveloperTab: TMenuItem;
  33.         BalloonHint1: TBalloonHint;
  34.         OpenDialog1: TOpenDialog;
  35.         SaveDialog1: TSaveDialog;
  36.         MemoRes: TMemo;
  37.         ActionList1: TActionList;
  38.         Action1: TAction;
  39.     Label1: TLabel;
  40.     Label2: TLabel;
  41.     Image1: TImage;
  42.  
  43.         Procedure Button1Click(Sender: TObject);
  44.         Procedure InstructionTabClick(Sender: TObject);
  45.         Procedure DeveloperTabClick(Sender: TObject);
  46.         Procedure EditKoefYKeyPress(Sender: TObject; Var Key: Char);
  47.         Procedure EditKoefXKeyPress(Sender: TObject; Var Key: Char);
  48.         Procedure OpenOptionClick(Sender: TObject);
  49.         Procedure GetPath(Var Path: String);
  50.         Procedure SaveOptionClick(Sender: TObject);
  51.         Procedure Checker(Var IsCorrect: Boolean);
  52.         Procedure FileTabClick(Sender: TObject);
  53.         Procedure EditKoefXChange(Sender: TObject);
  54.         Procedure EditKoefYChange(Sender: TObject);
  55.         Procedure Action1Update(Sender: TObject);
  56.  
  57.     Private
  58.         { Private declarations }
  59.     Public
  60.         { Public declarations }
  61.     End;
  62.  
  63. Const
  64.     E: Double = 1.0E-3;
  65.     NumSet = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', #8, #44, #45, #46];
  66.  
  67. Var
  68.     MainForm: TMainForm;
  69.     KoefX, KoefY: Real;
  70.  
  71. Implementation
  72.  
  73. {$R *.dfm}
  74.  
  75. Uses
  76.     Instruction,
  77.     Information;
  78.  
  79. Procedure TMainForm.Checker(Var IsCorrect: Boolean);      //проверка на преогбразования в числа
  80.  
  81. Begin
  82.     IsCorrect := True;
  83.  
  84.     Try
  85.         StrtoFloat(EditKoefX.Text);
  86.     Except
  87.         IsCorrect := False;
  88.     End;
  89.  
  90.     Try
  91.  
  92.         StrtoFloat(EditKoefY.Text);
  93.     Except
  94.         IsCorrect := False;
  95.     End;
  96.  
  97. End;
  98.  
  99. Procedure TMainForm.Action1Update(Sender: TObject);  //обновление Action1 если оба поля заполнены
  100. Begin
  101.     TAction(Sender).Enabled := (EditKoefX.Text <> '') And (EditKoefY.Text <> '')
  102. End;
  103.  
  104. Procedure TMainForm.Button1Click(Sender: TObject);   //при нажатии на Button1
  105. Var
  106.  
  107.     IsCorrect: Boolean;
  108. Begin
  109.     Checker(IsCorrect);
  110.     If IsCorrect Then
  111.     Begin
  112.  
  113.         KoefX := StrtoInt(EditKoefX.Text);
  114.         KoefY := StrtoInt(EditKoefY.Text);
  115.  
  116.         If (KoefY + 1 > 0) And (KoefX + 1 > 0) And (KoefY - 1 < (2 - KoefX) / 2) Then
  117.         Begin
  118.             MemoRes.Lines.Add('успешно прошло');
  119.  
  120.         End
  121.         Else
  122.         Begin
  123.             MemoRes.Lines.Add('не прошло');
  124.         End;
  125.     End;
  126.  
  127. End;
  128.  
  129. Procedure TMainForm.EditKoefYChange(Sender: TObject);
  130. Begin                                      //когда меняешь игрик, если пустой игрик то очищается MemoRes
  131.  
  132.     If Length(EditKoefY.Text) = 0 Then
  133.     Begin
  134.         MemoRes.Lines.Clear;
  135.     End;
  136. End;
  137.        //при изменении игрика (проверки)
  138. Procedure TMainForm.EditKoefYKeyPress(Sender: TObject; Var Key: Char);
  139. Begin
  140.     If Key In NumSet Then
  141.     Begin
  142.         If Key = '0' Then
  143.         Begin
  144.             If Length(EditKoefY.Text) = 1 Then
  145.             Begin
  146.                 If EditKoefY.Text[1] In ['0'] Then
  147.                 Begin
  148.                     Key := #0;
  149.                 End;
  150.             End;
  151.             If Length(EditKoefY.Text) = 2 Then
  152.             Begin
  153.                 If (EditKoefY.Text[1] = '-') AND (EditKoefY.Text[2] = '0') Then
  154.                 Begin
  155.                     Key := #0;
  156.                 End;
  157.             End;
  158.         End;
  159.  
  160.         If Key = #45 Then
  161.         Begin
  162.             If Length(EditKoefY.Text) > 0 Then
  163.             Begin
  164.                 BalloonHint1.Title := 'непонятный символ.';
  165.                 BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
  166.                 BalloonHint1.ImageIndex := 1;
  167.                 BalloonHint1.ShowHint(EditKoefY);
  168.                 Key := #0;
  169.             End;
  170.         End;
  171.  
  172.         If Key In [',', '.'] Then
  173.         Begin
  174.             Key := FormatSettings.DecimalSeparator;
  175.             If Pos(Key, EditKoefY.Text) <> 0 Then
  176.             Begin
  177.                 BalloonHint1.Title := 'непонятный символ.';
  178.                 BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
  179.                 BalloonHint1.ImageIndex := 1;
  180.                 BalloonHint1.ShowHint(EditKoefY);
  181.                 Key := #0;
  182.             End
  183.             Else
  184.                 If Length(EditKoefY.Text) > 0 Then
  185.                 Begin
  186.                     If (EditKoefY.Text[1] = '-') AND (Length(EditKoefY.Text) = 1) Then
  187.                     Begin
  188.                         Key := #0;
  189.                     End
  190.                 End
  191.                 Else
  192.                     If EditKoefY.SelStart = 0 Then
  193.                     Begin
  194.                         EditKoefY.Text := '0' + EditKoefY.Text;
  195.                         EditKoefY.SelStart := 1;
  196.                     End;
  197.         End;
  198.     End
  199.     Else
  200.     Begin
  201.         BalloonHint1.Title := 'непонятный символ.';
  202.         BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
  203.         BalloonHint1.ImageIndex := 1;
  204.         BalloonHint1.ShowHint(EditKoefY);
  205.         Key := #0;
  206.     End;
  207. End;
  208.  
  209. Procedure TMainForm.EditKoefXChange(Sender: TObject);
  210. Begin
  211.  
  212.     If Length(EditKoefX.Text) = 0 Then
  213.     Begin
  214.         MemoRes.Lines.Clear;
  215.     End;
  216. End;
  217.  
  218. Procedure TMainForm.EditKoefXKeyPress(Sender: TObject; Var Key: Char);
  219. Begin
  220.  
  221.     If Key In NumSet Then
  222.     Begin
  223.         If Key = '0' Then
  224.         Begin
  225.             If Length(EditKoefX.Text) = 1 Then
  226.             Begin
  227.                 If EditKoefX.Text[1] In ['0'] Then
  228.                 Begin
  229.                     Key := #0;
  230.                 End;
  231.             End;
  232.             If Length(EditKoefX.Text) = 2 Then
  233.             Begin
  234.                 If (EditKoefX.Text[1] = '-') AND (EditKoefX.Text[2] = '0') Then
  235.                 Begin
  236.                     Key := #0;
  237.                 End;
  238.             End;
  239.         End;
  240.  
  241.         If Key = #45 Then
  242.         Begin
  243.             If Length(EditKoefX.Text) > 0 Then
  244.             Begin
  245.                 BalloonHint1.Title := 'непонятный символ.';
  246.                 BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
  247.                 BalloonHint1.ImageIndex := 1;
  248.                 BalloonHint1.ShowHint(EditKoefX);
  249.                 Key := #0;
  250.             End;
  251.         End;
  252.  
  253.         If Key In [',', '.'] Then
  254.         Begin
  255.             Key := FormatSettings.DecimalSeparator;
  256.             If Pos(Key, EditKoefX.Text) <> 0 Then
  257.             Begin
  258.                 BalloonHint1.Title := 'непонятный символ.';
  259.                 BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
  260.                 BalloonHint1.ImageIndex := 1;
  261.                 BalloonHint1.ShowHint(EditKoefX);
  262.                 Key := #0;
  263.             End
  264.             Else
  265.                 If Length(EditKoefX.Text) > 0 Then
  266.                 Begin
  267.                     If (EditKoefX.Text[1] = '-') AND (Length(EditKoefX.Text) = 1) Then
  268.                     Begin
  269.                         Key := #0;
  270.                     End
  271.                 End
  272.                 Else
  273.                     If EditKoefX.SelStart = 0 Then
  274.                     Begin
  275.                         EditKoefX.Text := '0' + EditKoefX.Text;
  276.                         EditKoefX.SelStart := 1;
  277.                     End;
  278.         End;
  279.     End
  280.     Else
  281.     Begin
  282.         BalloonHint1.Title := 'Íåäîïóñòèìûé ñèìâîë.';
  283.         BalloonHint1.Description := 'Çäåñü ìîæíî ââåñòè òîëüêî ÷èñëî.';
  284.         BalloonHint1.ImageIndex := 1;
  285.         BalloonHint1.ShowHint(EditKoefX);
  286.         Key := #0;
  287.     End;
  288. End;
  289.  
  290. Procedure TMainForm.FileTabClick(Sender: TObject);
  291. Begin
  292.     If MemoRes.Lines.Count = 0 Then
  293.     Begin
  294.         SaveOption.Enabled := False;
  295.     End
  296.     Else
  297.     Begin
  298.         SaveOption.Enabled := True;
  299.     End;
  300. End;
  301.  
  302. Procedure TMainForm.InstructionTabClick(Sender: TObject);
  303. Begin
  304.     InstructionForm.ShowModal;         //инструкция
  305. End;
  306.  
  307. Procedure TMainForm.GetPath(Var Path: String);
  308. Begin                            //принимает переменную по ссылке для получения пути к файлу
  309.     If OpenDialog1.Execute Then
  310.     Begin
  311.         Path := OpenDialog1.FileName;
  312.     End
  313.     Else
  314.     Begin
  315.         ShowMessage('Файл успешно закрыт.');
  316.     End;
  317. End;
  318.  
  319. Procedure TMainForm.OpenOptionClick(Sender: TObject);
  320. Var                                                    //открытие файла и чтение данных
  321.     IsCorrect: Boolean;
  322.     Path, Errors, Stor, Rad: String;
  323.     FileElem: TextFile;
  324. Begin
  325.     GetPath(Path);
  326.  
  327.     AssignFile(FileElem, Path);
  328.  
  329.     IsCorrect := True;
  330.  
  331.     Try
  332.         Try
  333.             Reset(FileElem);
  334.         Except
  335.             CloseFile(FileElem);
  336.             IsCorrect := False;
  337.             ShowMessage('Ошибка при открытии файла.');
  338.         End;
  339.  
  340.         If IsCorrect Then
  341.         Begin
  342.             Try
  343.                 Readln(FileElem, Stor);
  344.                 StrtoFloat(Stor);
  345.             Except
  346.                 Errors := 'При чтении строки из файла для переменной `Stor` было обнаружено некорректное значение, равное 1.';
  347.                 Stor := '1';
  348.             End;
  349.  
  350.             Try
  351.                 Readln(FileElem, Rad);
  352.                 StrtoFloat(Rad);
  353.             Except
  354.                 Errors := Errors + #13#10 + 'При чтении строки из файла для переменной `Rad` было обнаружено некорректное значение, равное 1.';
  355.                 Rad := '1';
  356.             End;
  357.  
  358.         End;
  359.     Finally
  360.         CloseFile(FileElem);
  361.         ShowMessage('Файл сохранен успешно.');
  362.     End;
  363.  
  364.     If Errors.Length > 0 Then
  365.     Begin
  366.         ShowMessage(Errors);
  367.     End;
  368.  
  369.     EditKoefX.Text := Stor;
  370.     EditKoefY.Text := Rad;
  371.  
  372. End;
  373.  
  374. Procedure TMainForm.SaveOptionClick(Sender: TObject);
  375. Begin                               //сохранение содержимого текстового поля MemoRes в файл
  376.  
  377.     If SaveDialog1.Execute Then
  378.     Begin
  379.  
  380.         MemoRes.Lines.SaveToFile(SaveDialog1.FileName);
  381.     End
  382.     Else
  383.  
  384.     Begin
  385.         ShowMessage('Файл сохранен успешно');
  386.     End;
  387.  
  388. End;
  389.  
  390. Procedure TMainForm.DeveloperTabClick(Sender: TObject);
  391. Begin                                  //отображение информации о разработчиках
  392.     InformationForm.ShowModal;
  393. End;
  394.  
  395. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement