- •1 Delphi ортасымен танысу
- •1.1 Негізгі ұғымдар. Бағдарлама құру кезінде шешілетін тапсырмалар
- •Зертханалық жұмыс № 1 «Delphi интерфейсінің элементтері»
- •Зертханалық жұмыс № 2 «Негізгі пішіннің жобасы мен модульінің бағдарламалық коды»
- •Interface
- •Implementation
- •Initialization
- •Зертханалық жұмыс № 3 ««Тест» қосымшасын құру»
- •Mainform модулінің соңғы бағдарламалық коды
- •2 Object pascal тіліндегі объектілі – бағытталған бағдарламалау
- •2.1 Класс және объект туралы түсінік
- •2.2 Инкапсуляция, туындау және полиморфизм
- •2.3 Кластың синтаксисі
- •Interface
- •Implementation
- •2.4 Кластың өрістері
- •2.5 Кластың әдістері
- •Implementation
- •2.6 Кластың қасиеттері
- •2.7 Кластың құрылымы. Кластың элементтерінің көріну аймағы
- •2.8 Кластарға операциялар қолдану. Is және as кілттік сөздері
- •2.9 Оқиға және меншіктеу
- •Бақылау сұрақтары:
- •Зертханалық жұмыс №4 «Полиморфизм және көрнекілік әдістер»
- •Interface
- •Implementation
- •Зертханалық жұмыс №5 "Қаситтер мен әдістер"
- •Өз бетінше орындауға арналған тапсырма
- •Зертханалық жұмыс №6 "Оқиғалар"
- •Interface
- •Implementation
- •Өз бетінше орындауға тапсырма
- •3 Терезелік қосымшаларды құру
- •3.1 Label, Edit, Memo мәтіндік құрауыштары. Button батырмасы
- •Зертханалық жұмыс №7 "Қарапайым Windows-қосымшасын құру"
- •3.2 Пернетақта арқылы берілген хабарламаны өңдеу
- •3.3 Тышқан арқылы берілген хабарламаны өңдеу
- •Зертханалық жұмыс №8 “tForm объектісі”
- •3.4 Басқару элементтерінің тасуын қамтамасыз ететін сипаттамалар (Drag & Drop тетігі)
- •Зертханалық жұмыс №9 "Экрандық объектілерді сүйреу"
- •3.5 Диалог терезелері. Dialogs парағындағы Delphi құрауыштары (Open Dialog, Save Dialog, Font Dialog және т.Б.)
- •Тәжірибелік жұмыс №10 «Мәтіндік редактор»
- •3.6 Delphi - дің кескінді құруға тағайындалған кластары мен құрауыштары. Timer – таймер құрауышы
- •Image құрауышы.
- •Зертханалық жұмыс №10 «Бейнелерді құру»
- •Interface
- •Implementation
- •Қарандаш және қылқалам
- •Қарапайым графиктерді сызу әдістері
- •Функциялардың графиктері мен диаграммаларын сызу
- •Interface
- •Implementation
- •5. Мультимедиалық мүмкіндіктер
- •5.1. Animate компоненті
- •Interface
- •5.2. MediaPlayer компоненті
- •5.3. Дыбысты шығару
- •Implementation
- •5.4. Видеороликтер мен анимацияны қарап шығу
- •Implementation
- •5.5 Анимацияны құру
- •Әдебиеттер тізімі
Зертханалық жұмыс №6 "Оқиғалар"
Кластың сипатталынуы "Кәдімгі бөлшек" (TDrob).
Қасиеттері – аты, мәні, бөлінді және бөлгіш.
Әдістер:
– процедуралар: бөлшекті орынымен ауыстыру (Swap), басқа бөлшектің мәнін қосу (Add);
– функциялар: ақпарат (Info);
– конструктор (Create).
Оқиғалар:
– бөлшек өзгерді (OnChange), стандарттық;
– бөлгіш нөлге тең (OnZero), параметрлері – ескі мән.
2.3 листингі «TDrobs» класының жариялануынан тұратын DROBS модульі
unit Drobs;
Interface
uses SysUtils,Classes;
type
TMyEvent=procedure(Sender:TObject;OldP,OldQ:longint) of Object;
TDrob=class
private
fName:string;
fp,fq:longint;
fOnChange:TNotifyEvent;
fOnZero:TMyEvent;
procedure SetP(NewP:longint);
procedure SetQ(NewQ:longint);
public
constructor Create(aName:string);
procedure Swap;
procedure Add(a:TDrob);
function Info:string;
function GetValue:real;
procedure SetValue(NewValue:real);
procedure SetPQ(NewP,NewQ:longint);
property Name:string read fName write fName;
property Value:real read GetValue write SetValue;
property p:longint read fp write SetP;
property q:longint read fq write SetQ;
property OnChange:TNotifyEvent read fOnChange write fOnChange;
property OnZero:TMyEvent read fOnZero write fOnZero;
end;
Implementation
procedure TDrob.SetPQ(NewP, NewQ: longint);
var pp,qq : longint;
begin
if (NewP<>p) or (NewQ<>q) then
begin
pp:=p; qq:=q;
if NewQ<>0
then
begin fp:=NewP; fq:=NewQ; Normalization; end
else
begin fp:=NewP; fq:=1;
if assigned(fOnZero) then OnZero(Self,pp,qq)
end;
if assigned(fOnChange) then OnChange(Self);
end;
end;
constructor TDrob.Create;
begin
inherited Create;
Name:=aName;
SetPQ(1,1);
end;
function TDrob.Info: string;
begin
Result:='Дробь '+Name+'= '+IntToStr(p)+'/'+IntToStr(q)+'='+
FloatToStrF(Value,ffFixed,9,5);
end;
procedure TDrob.Swap;
begin
SetPQ(q,p);
end;
procedure TDrob.Add(a: TDrob);
begin
SetPQ(p*a.q+q*a.p,q*a.q);
end;
procedure TDrob.SetP(NewP:longint);
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);
бөлшектің мәнінің өзгеруі (<ENTER> батырмасын басқанда)
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;
