Міністерство освіти і науки України
Хмельницький національний університет
Кафедра системного програмування
Лабораторна робота №3
з програмування
на тему:
«Ознайомлення з інструментальним середовищем програмування Delphi. Робота з простими візуальними об’єктами»
Лабораторна робота №3
Тема: Ознайомлення з інструментальним середовищем програмування Delphi. Робота з простими візуальними об’єктами.
Мета:ознайомитись з інструментальним середовищем програмування Delphi та його простими візуальними об’єктами.
Завдання
Розробити проект, в якому на формі розмістити необхідні компоненти для введення координат вершин трикутника (TEdit, TLabel). Для виконання обчислень і завершення роботи програми використати компоненти TButton. Для вибору необхідного варіанту обчислень застосувати компонент RadioButton або TCheckBox. Результати обчислень виводити в компонент TLabel. Для компонентів, які відображують результати роботи, заборонити можливість правки в компоненті. Забезпечити перевірку введених даних із видачею відповідного повідомлення та блокуванням компонентів форми у випадку некоректних даних.
Знайти кут A і медіану Мb.
Unit1.pas
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton; Button2: TButton; Button3: TButton;
Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit;
Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel;
Label6: TLabel; Label7: TLabel;
RadioButton1: TRadioButton; RadioButton2: TRadioButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: char);
procedure Edit2KeyPress(Sender: TObject; var Key: char);
procedure Edit3KeyPress(Sender: TObject; var Key: char);
procedure Edit4KeyPress(Sender: TObject; var Key: char);
procedure Edit5KeyPress(Sender: TObject; var Key: char);
procedure Edit6KeyPress(Sender: TObject; var Key: char);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit1.Clear; Edit2.Clear; Edit3.Clear; Edit4.Clear; Edit5.Clear; Edit6.Clear;
Label7.Caption:='Результат: '
end;
procedure TForm1.Button1Click(Sender: TObject);
var xa,xb,xc,ya,yb,yc,AB,BC,AC,Mb,A: real;
begin
if (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') and (Edit4.Text<>'') and (Edit5.Text<>'') and (Edit6.Text<>'') then
begin
xa:=StrToFloat(Edit1.Text); xb:=StrToFloat(Edit2.Text); xc:=StrToFloat(Edit3.Text);
ya:=StrToFloat(Edit4.Text); yb:=StrToFloat(Edit5.Text); yc:=StrToFloat(Edit6.Text);
AB:=sqrt(sqr(xb-xa)+sqr(yb-ya));
BC:=sqrt(sqr(xc-xb)+sqr(yc-yb));
AC:=sqrt(sqr(xc-xa)+sqr(yc-ya));
if not ((AB+BC>AC) and (AB+AC>BC) and (BC+AC>AB)) then ShowMessage('Дані точки не утворюють трикутник! Введіть інші дані!') else
begin
if RadioButton1.Checked then
begin
A:=arctan(sqrt(1 - sqr((AB*AB + AC*AC - BC*BC)/(2*AC*AB))) / ((AC*AC+AB*AB-BC*BC)/(2*AC*AB)));
A:=abs(A*180/pi);
Label7.Caption:='Результат: '+'A='+FloatToStrF(A,ffFixed,3,2)+' градусів';
end
else
begin
Mb:=sqrt((2*BC*BC+2*AB*AB-AC*AC)/4);
Label7.Caption:='Результат: '+'Mb='+FloatToStrF(Mb,ffFixed,10,5);
end;
end;
end
else ShowMessage('Введіть координати усіх точок!');
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
case Key of
#8,'0'..'9': ;
'-': if Edit1.Text<>'' then Key:=#0;
',': begin if Length(Edit1.Text)-pos('-',Edit1.Text)=0 then Key:=#0;
if pos(',',Edit1.Text)<>0 then Key:=#0;
end
else Key:=#0;
end;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: char);
begin
case Key of
#8,'0'..'9': ;
'-': if Edit2.Text<>'' then Key:=#0;
',': begin if Length(Edit2.Text)-pos('-',Edit2.Text)=0 then Key:=#0;
if pos(',',Edit2.Text)<>0 then Key:=#0;
end
else Key:=#0;
end;
end;
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: char);
begin
case Key of
#8,'0'..'9': ;
'-': if Edit3.Text<>'' then Key:=#0;
',': begin if Length(Edit3.Text)-pos('-',Edit3.Text)=0 then Key:=#0;
if pos(',',Edit3.Text)<>0 then Key:=#0;
end
else Key:=#0;
end;
end;
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: char);
begin
case Key of
#8,'0'..'9': ;
'-': if Edit4.Text<>'' then Key:=#0;
',': begin if Length(Edit4.Text)-pos('-',Edit4.Text)=0 then Key:=#0;
if pos(',',Edit4.Text)<>0 then Key:=#0;
end
else Key:=#0;
end;
end;
procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: char);
begin
case Key of
#8,'0'..'9': ;
'-': if Edit5.Text<>'' then Key:=#0;
',': begin if Length(Edit5.Text)-pos('-',Edit5.Text)=0 then Key:=#0;
if pos(',',Edit5.Text)<>0 then Key:=#0;
end
else Key:=#0;
end;
end;
procedure TForm1.Edit6KeyPress(Sender: TObject; var Key: char);
begin
case Key of
#8,'0'..'9': ;
'-': if Edit6.Text<>'' then Key:=#0;
',': begin if Length(Edit6.Text)-pos('-',Edit6.Text)=0 then Key:=#0;
if pos(',',Edit6.Text)<>0 then Key:=#0;
end
else Key:=#0;
end;
end;
initialization
{$I unit1.lrs}
end.
Результати:
/
/
Висновок. Виконавши лабораторну роботу, я ознайомився з простими компонентами середовища Delphi, такими як TLabel, TEdit, TButton, TRadioButton та засвоїв принципи роботи з їх властивостями, отримав навички створення найпростіших обробників подій з можливістю перевірки вхідних даних та виведення інформаційних повідомлень.