Зертханалық жұмыс №1 «Delphi интерфейсінің элементтері»


Unit polimor_; Interface



жүктеу 2,2 Mb.
бет57/118
Дата04.01.2022
өлшемі2,2 Mb.
#36255
1   ...   53   54   55   56   57   58   59   60   ...   118
Зертханалы ж мыс №1 «Delphi интерфейсіні элементтері»

Unit polimor_;

Interface

Uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;



type

ТForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

GroupBox1: TGroupBox;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

( Private declarations )

public

( Public declarations )

end;

type

// базалық класс

TPerson = class

FName: String; // өрістің аты

Constructor Create(AName: String);

Function Info: String; virtual;

end;

// Студент класы

TStud = class (TPerson)

FGr: Integer; // оқу тобының нөмірі

Constructor Create(AName: String; Gr: Integer);

Function Info: String; override;



end;

// Оқытушы класы

TProf = class(TPerson)

FDep: String; // құжыраның аты

Constructor Create(AName: String; Dep: String);

Function Info: String; override;

end;

const

SZL = 10; // тізімнің өлшемі



var

Forml: TForml

List: array[1..SZL] of TPerson; // тізім

n: Inteqer = 0 // тізімдегі адамдар саны



implementation

($R *.DFM}



constructor TPerson.Create(AName: string);

begin

FName:=AName;



end;

constructor TStud.Create(AName: string; Gr: integer);

begin

inherited Create(AName); // базалық кластың конструкторын шақыру

FGr:=Gr;

end;

constructor TProf.Create(AName: string; Dep: string);

begin

inherited Create(AName); // базалық кластың конструкторын шақыру

FDep:=Dep;

end;

function TPerson.Info: string;

begin

result:=FName;



end;

function TStud.Info: String;

begin

result := FName + ' группа ' + IntToStr(FGr)



end;

function TProf.Info: String;

begin

result := FName + ' кафедра ' + FDep;



end;

// Добавить батырмасына шерту

procedure ТForm1.Button1Click(Sender: TObject);

begin

if n < SZL then

begin

// объектіні класқа қосу

n:=n+1;



if RadioButton1.Checked

then // TStud объектісін құру

List[n]:=TStud.Create(Edit1.Text,StrToInt(Edit2.Text))



else // TProf объектісін құру

if RadioButton2.Checked then List[nl:=TРrоf.Create(Edit1.Text,Edit2.Text);

// енгізу өрісін тазалау

Edit1.Text :=' ';

Edit2.Text :=' ';

Edit1.SetFocus; // Тышқанның меңзері Фамилия өрісінде



end

else ShowMessage('Список заполнен!');

end;

procedure ТForm1.Button2Click(Sender: TObject);

var

i:integer; // индекс

st:string; // тізім

begin

for i:=1 to SZL do

if list[i] <> NIL then st:=st + list[i].info + #13;

ShowMessage(' Список ' + #13 + st);



end;

end.

Добавить (Button1) батырмасын басқанда іске қосылатын TForm1.Button1Click процедурасы TStud немесе TProf класының list[n] объектісін құрады. Құрылып жатқан объектінің класы RadioButton ауыстырып қосу батырмасының күйімен анықталады. Ауыстырып қосу батырмасының студент (RadioButton1) жағдайында орнатылуы TStud класын анықтайды, ал оқытушы (RadioButton2) жағдайы – TProf класын анықтайды.

Список (Button2) батырмасын басқанда іске қосылатын TForm1.Button2Click процедурасы тізімнің әрбір объектісіне (массив элементтеріне) Info әдісін қолдана отырып,барлық тізімді көрсететін жолды қалыптастырады.







































Зертханалық жұмыс №5 "Қаситтер мен әдістер"


Кластың сипатталынуы "Қос мәнді теріс емес бүтін сан" (TN2).

Қасиет – аты, мәні, тақтық, бірінші сан, екінші сан.

Әдістер:

процедуры: мәнді орнату (SetN2), сандарды ауыстыру (Swap);

функциялар: басқа санға қарағанда кіші (LessThen), ақпарат (Info);

конструктор (Create).

Листинг 2.2 «TN2» класын жүзеге асыратын бағдарламаның демонстрациясы

program Class_TN2;

{$APPTYPE CONSOLE} {Компилятор директивасы – бағдарламаның жұмыс істеу режимінің тапсырмасы.}



{MS-DOS режиміне тәріздес мәтіндік режимнің эмуляторы құрылады}

uses SysUtils;

type

TN2 = class

fName: String;

fVal: integer;



constructor Create(aName: String);

procedure Swap;

function Info: String;

function LessThen(aNum: TN2): Boolean;

procedure SetVal(Value:Integer);

function GetOdd:string;

function GetD1:byte;

procedure SetD1(Value:byte);

function GetD2:byte;

procedure SetD2(Value:byte);

property Name:string read fName;

property Odd:string read GetOdd;

property Val:integer read fVal write SetVal;

property D1:byte read GetD1 write SetD1;

property D2:byte read GetD2 write SetD2;

end;

constructor TN2.Create(aName: String);

begin

fName:=aName;

fVal:=1;

end;

procedure TN2.Swap;

begin

SetVal(D2*10+D1);



end;

function TN2.Info: String;

begin

Result:='Naturalnoe dvuznachnoe '+odd+


' chislo '+Name+'='+IntToStr(Val)+#10#13+' first number='
+IntToStr(D1)+' second number='+IntToStr(D2);

end;

procedure TN2.SetVal(Value: Integer);

begin

if (Value>=0) and (Value<=99) then fVal:=Value;

end;

function TN2.LessThen(aNum: TN2): boolean;

begin

Result:= Val

end;

function TN2.GetOdd: string;

begin

if (val mod 2=1) then Result:='nechetnoe'

else Result:='chetnoe';

end;

function TN2.GetD1: byte;

begin

Result:=Val div 10;



end;

procedure TN2.SetD1(Value: byte);

begin

if Value in [0..9] then SetVal(Value*10+D2)

end;

function TN2.GetD2: byte;

begin

Result:=Val mod 10;



end;

procedure TN2.SetD2(Value: byte);

begin

if Value in [0..9] then SetVal(D1*10+Value)

end;

var a,b : TN2;

begin

a:= TN2.Create(' a ');

b:= TN2.Create(' b '); { Бағдарламаның орындалуының нәтижесі

b.Val:= 23; {

Writeln(a.Info); {
Writeln(b.Info); {

b.swap; {

a.D1:= 5; {

a.D2:= 8; {



Writeln(a.Info); {
Writeln(b.Info); {

a.Free; {

b.Free; {

Readln; {

end.

begin

SetPQ(NewP,q);



end;

 

procedure TDrob.SetQ(NewQ: longint);



begin

SetPQ(p,NewQ);



end;

 

function TDrob.GetValue: real;



begin

Result:=p/q;



end;

 

procedure TDrob.SetValue(NewValue: real);



begin

SetPQ(round(NewValue*10000),10000);



end;

end.

Delphi – дегі демонстрациялық бағдарлама

 – Drobs модульі қосылады:



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,


Forms, Dialogs, StdCtrls, Drobs

– екі бөлшекке тағайындалған айнымалылар сипатталынады:



var

Form1 : TForm1;



a,b : TDrob; 

– пішінге келесі объектілер орналастырылады:



GroupBox1, GroupBox2

бірінші және екінші бөлшектердің демонстрациясы үшін;

Label1, Edit1

бірінші бөлшектің бөліндісі

Label2, Edit2

бірінші бөлшектің бөлгіші

Label3, Edit3

бірінші бөлшектің мәні

Label4, Edit4

екінші бөлшектің бөліндісі

Label5, Edit5

екінші бөлшектің бөлгіші

Label6, Edit6

екінші бөлшектің мәні

Button1

"Орын ауыстыру"

Button2

"+"

Button3

"INFO" бірінші бөлшек үшін

Button4

"INFO" екінші бөлшек үшін

– үш процедура қосылады – бөлшектерді өңдеу үшін:



  • бірінші бөлшектің өзгеруі:

procedure TForm1.AChange(Sender: TObject);

begin

GroupBox1.Caption:=a.Name;

Edit1.Text:=IntToStr(a.p);

Edit2.Text:=IntToStr(a.q);

Edit3.Text:=FloatToStrF(a.Value,ffFixed,9,5);

end


  • екінші бөлшектің өзгеруі:

procedure TForm1.BChange(Sender: TObject);

begin

GroupBox2.Caption:=b.Name;

Edit4.Text:=IntToStr(b.p);

Edit5.Text:=IntToStr(b.q);

Edit6.Text:=FloatToStrF(b.Value,ffFixed,9,5);

end


  • екі бөлшек үшін бөлгіштің нольге айналуы:

procedure TForm1.ZeroEvent(Sender: TObject;
OldP,OldQ:longint);

begin

with sender as TDrob do

if MessageDlg('Дробь '+Name+
' получила нулевой знаменатель,'+
' который бы заменен единицей.
Восстановить прежнее значение?',
mtWarning,[mbYes,mbNo],0) = mrYes then SetPQ(OldP,OldQ);

end

– бөлшектерді басқаруға арналған көрнекілік құрауыштардың өңдеу - процедуралары қосылып жазылады:



  • Form1.OnCreate оқиғасының өңделуі (пішінді құру):

a:=TDrob.Create('a');

a.OnChange:=AChange; a.OnChange(a);

a.OnZero:=ZeroEvent;

b:=TDrob.Create('b');

b.OnChange:=BChange; b.OnChange(b);

b.OnZero:=ZeroEvent; 



  • бөлінді мен бөлгіштің терезелерінде символдық батырмалардың басылуы
    Edit1, Edit2, Edit4, Edit5 құрауыштары үшін OnKeyPress оқиғасы:

var st:string;

begin

with Sender as TEdit do

begin

st:=text;



if Key='-'

then begin

if st[1]='-' then Delete(st,1,1)

else st:='-'+st;

Text:=st;



end;

if not (Key in ['0'..'9',#8]) then Key:=#0;

if Key=#8 then if Length(st)<2 then Key:=#0;

end;

end

  • бөлінді мен бөлгіштің өзгеруі

Edit1.OnChange: a.p:=StrToInt(Edit1.Text);
Edit2.OnChange: a.q:=StrToInt(Edit2.Text);
Edit4.OnChange: b.p:=StrToInt(Edit4.Text);
Edit5.OnChange: b.q:=StrToInt(Edit5.Text);

  • бөлшектің мәнінің өзгеруі ( батырмасын басқанда)

Edit3.OnKeyPress: if Key=#13 then
a.Value:=StrToFloat(edit3.Text);
Edit6.OnKeyPress
: if Key=#13 then
b.Value:=StrToFloat(edit6.Text);

  • "Обмен" батырмасының басылуы

Button1.OnClick: a.Swap;

  • "+" батырмасын басу

Button2.OnClick: a.Add(b);

  • бірінші бөлшектің "INFO" батырмасының үстінен тышқанды жылжыту

Button3.OnMouseMove: Button3.Hint:=a.info;

  • екінші бөлшектің "INFO" батырмасының үстінен тышқанды жылжыту

Button4.OnMouseMove: Button4.Hint:=b.info; 


жүктеу 2,2 Mb.

Достарыңызбен бөлісу:
1   ...   53   54   55   56   57   58   59   60   ...   118




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау