Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Imaging.jpeg,
- Vcl.ExtCtrls, Vcl.Menus;
- type
- TStatkevich_Angelina_851001_Lab1_1 = class(TForm)
- LbEnterSide1: TLabel;
- LbEnterSide2: TLabel;
- LbEnterSide3: TLabel;
- EdSide1: TEdit;
- EdSide2: TEdit;
- EdSide3: TEdit;
- BtDefiner: TButton;
- LbRes: TLabel;
- MainMenu: TMainMenu;
- OpenFile: TOpenDialog;
- FileMenuItem: TMenuItem;
- OpenMenuItem: TMenuItem;
- SaveAsMenuItem: TMenuItem;
- SaveFile: TSaveDialog;
- HelpMenuItem: TMenuItem;
- Aboutprogram1: TMenuItem;
- Aboutprogrammer1: TMenuItem;
- LineMenuItem: TMenuItem;
- ExitMenuItem: TMenuItem;
- PopupMenu: TPopupMenu;
- procedure BtDefinerClick(Sender: TObject);
- procedure EdSide2Change(Sender: TObject);
- procedure EdSide3Change(Sender: TObject);
- procedure EdSide1Change(Sender: TObject);
- procedure OpenMenuItemClick(Sender: TObject);
- procedure SaveAsMenuItemClick(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure AboutProgramClick(Sender: TObject);
- procedure AboutProgrammerClick(Sender: TObject);
- procedure ExitMenuItemClick(Sender: TObject);
- procedure CheckInput(Sender: TObject);
- procedure EdSideKeyPress(Sender: TObject; var Key: Char);
- function CheckFileName(MyFile: string): string;
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Statkevich_Angelina_851001_Lab1_1: TStatkevich_Angelina_851001_Lab1_1;
- implementation
- {$R *.dfm}
- procedure TStatkevich_Angelina_851001_Lab1_1.AboutProgramClick(Sender: TObject);
- const
- sms = 'Программа определяет, является ли треугольник равносторонним';
- begin
- MessageDlg(sms, mtInformation, [mbOk], 0);
- end;
- procedure TStatkevich_Angelina_851001_Lab1_1.AboutProgrammerClick(Sender: TObject);
- begin
- MessageDlg('Программа разработана Статкевич Ангелиной' + #13 +
- 'студенткой группы 851001, ФКСиС, ПОИТ' , mtInformation, [mbOk], 0);
- end;
- procedure TStatkevich_Angelina_851001_Lab1_1.BtDefinerClick(Sender: TObject);
- var
- FirstSide, SecondSide, ThirdSide: Real;
- begin
- FirstSide := StrToFloat(EdSide1.Text);
- SecondSide := StrToFloat(EdSide2.Text);
- ThirdSide := StrToFloat(EdSide3.Text);
- if (FirstSide < SecondSide + ThirdSide) and (SecondSide < FirstSide + ThirdSide) and (ThirdSide < FirstSide + SecondSide) then
- begin
- if (FirstSide = SecondSide) and (SecondSide = ThirdSide) then
- LbRes.Caption := 'Треугольник равносторонний'
- else
- LbRes.Caption := 'Треугольник неравносторонний';
- end
- else
- LbRes.Caption := 'Треугольника с такими сторонами не существует';
- SaveAsMenuItem.Enabled := True;
- end;
- procedure TStatkevich_Angelina_851001_Lab1_1.CheckInput(Sender: TObject);
- begin
- with Sender as TEdit do
- begin
- if (length(Text) > 15) then
- begin
- color := clMaroon;
- ShowMessage('Ошибка ввода. Вы ввели слишком большое число');
- BtDefiner.Enabled := false;
- Clear;
- end
- else
- color := clWhite;
- end;
- end;
- function GetIsRepeated(Text: string): Boolean;
- var
- i: Integer;
- IsRepeated: Boolean;
- begin
- i := 1;
- IsRepeated := False;
- while (i <= Length(Text)) and not (IsRepeated) do
- begin
- if (Text[i] = ',') or (Text[i] = '.') then
- IsRepeated := True;
- inc(i);
- end;
- GetIsRepeated := IsRepeated;
- end;
- procedure TStatkevich_Angelina_851001_Lab1_1.EdSideKeyPress(Sender: TObject; var Key: Char);
- const
- Numerals = ['0'..'9', #8, '.'];
- begin
- with Sender as TEdit do
- begin
- if not (Key in Numerals) then
- Key := #0;
- if (Key = '.') and GetIsRepeated(Text) then
- Key := #0;
- if (Key = '.') and (Length(Text) = 0) then
- Key := #0;
- if (Key = '0') and (Length(Text) = 1) then
- Key := #0;
- end;
- end;
- procedure TStatkevich_Angelina_851001_Lab1_1.EdSide1Change(Sender: TObject);
- begin
- CheckInput(EdSide1);
- EdSide2.Enabled := True;
- LbRes.Caption := '';
- end;
- procedure TStatkevich_Angelina_851001_Lab1_1.EdSide2Change(Sender: TObject);
- begin
- CheckInput(EdSide2);
- EdSide3.Enabled := True;
- LbRes.Caption := '';
- end;
- procedure TStatkevich_Angelina_851001_Lab1_1.EdSide3Change(Sender: TObject);
- begin
- CheckInput(EdSide3);
- BtDefiner.Enabled := True;
- SaveAsMenuItem.Enabled := False;
- LbRes.Caption := '';
- end;
- procedure TStatkevich_Angelina_851001_Lab1_1.ExitMenuItemClick(Sender: TObject);
- begin
- Close;
- end;
- procedure TStatkevich_Angelina_851001_Lab1_1.FormClose(Sender: TObject; var Action: TCloseAction);
- var
- Choice: Integer;
- begin
- Choice := MessageDlg('Are you sure you want to exit?', mtConfirmation, [mbYes, mbNo], 0);
- case Choice of
- 1: ;
- 2: Action := caNone;
- end;
- end;
- procedure TStatkevich_Angelina_851001_Lab1_1.OpenMenuItemClick(Sender: TObject);
- var
- inputFile: TextFile;
- temp: Real;
- begin
- if OpenFile.Execute then
- begin
- try
- AssignFile(inputFile, OpenFile.FileName);
- Reset(inputFile);
- if SeekEof(inputFile) then
- begin
- MessageDlg('Похоже, файл пустой. Повторите попытку', mtError, [mbRetry], 0);
- EdSide1.Clear;
- EdSide2.Clear;
- EdSide3.Clear;
- end
- else
- begin
- ReadLn(inputFile,temp);
- EdSide1.Text := FloatToStr(temp);
- ReadLn(inputFile,temp);
- EdSide2.Text := FloatToStr(temp);
- ReadLn(inputFile,temp);
- EdSide3.Text := FloatToStr(temp);
- CloseFile(inputFile);
- end;
- except
- MessageDlg('Ошибка ввода данных. Повторите попытку.', mtError, [mbRetry], 0);
- EdSide1.Clear;
- EdSide2.Clear;
- EdSide3.Clear;
- end;
- end;
- end;
- function TStatkevich_Angelina_851001_Lab1_1.CheckFileName(MyFile: string): string;
- var
- i: byte;
- isCorrect: boolean;
- begin
- isCorrect := false;
- i := 1;
- while not isCorrect and (i <= length(MyFile)) do
- begin
- if MyFile[i] = '.' then
- isCorrect := true;
- inc(i);
- end;
- if (not isCorrect) then
- MyFile := MyFile + '.txt';
- CheckFileName := MyFile;
- end;
- procedure TStatkevich_Angelina_851001_Lab1_1.SaveAsMenuItemClick(Sender: TObject);
- var
- outputFile: TextFile;
- MyFile: string;
- ButtonSelected: byte;
- begin
- if SaveFile.Execute then
- begin
- MyFile := SaveFile.FileName;
- MyFile := CheckFileName(MyFile);
- if FileExists(MyFile) then
- begin
- ButtonSelected := MessageDlg('Сохранить результаты в файл?', mtConfirmation, [mbYes, mbNo], 0);
- if ButtonSelected = mrYes then
- begin
- AssignFile(outputFile, MyFile);
- Rewrite(outputFile);
- writeln(outputFile, LbRes.Caption);
- CloseFile(outputFile);
- end
- else
- SaveAsMenuItemClick(Sender);
- end
- else
- begin
- AssignFile(outputFile, MyFile);
- Rewrite(outputFile);
- writeln(outputFile, LbRes.Caption);
- CloseFile(outputFile);
- end;
- end;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement