bosilsa kerakli ob`ekt aktivlashadi. Misol uchun:
Label1.Caption := ‘F&ile’;
erda Alt+I tugmalari teng bosilsa Label1 ob`ekti aktivlashadi.
Color – Ob`ekt sirtining rangini tanlash imkonini beradi.
Constraints – ob`ekt chegaralarini aniqlash. Undagi ko`rsatrichlarning vazifasi quyidagicha:
Ko`rsatkich
|
Vazifasi
|
MaxHeight
|
Ob`ektning maksimum balandligi
|
MaxWidth
|
Ob`ektning maksimum uzunligi
|
MinHeight
|
Ob`ektning mimimum balandligi
|
MinWidth
|
Ob`ektning mimimum uzunligi.
|
Cursor – sichqoncha ko`rsatkichini ob`ekt sirtida o`zgartirish.
Enabled – ob`ektni ishch holatga keltirish. Enabled ko`rsatkichi true bolsa ob`ekt ishchi holatda bo`ladi. Aks holda (False) ishchi holatda emas. Ko`pchilik hollarda vaqtinchalik bajarilmaydigan ob`ektlar ishchi holdan chiqarib turiladi (ob`ekt.Enabled := False).
Font – ob`ektning sriftini o`zgartirish.
Height – ob`ektning bo`yi. (ob`ekt.Height := 150; ob`ekt bo`yi 150 ta pikselga teng).
Hint – kichik yordam. Sichqoncha ko`rsatkichi ob`ekt sirtiga olib borilganda kichik yordam chiqariladi. (ob`ekt.Hint :=’Bu Label komponenti’;).
Layout – ob`ekt tarkibidagi matnni vertikal yo`nalish bo`yicha chop etish. Undagi ko`rsatrichlarning vazifasi quyidagicha:
Ko`rsatkich
|
Vazifasi
|
tlTop
|
Matn ob`ektning yuqori qismida
|
tlCenter
|
Matn ob`ektning o`rta qismida
|
tlBottom
|
Matn ob`ektning ostki qismida
|
Left – ob`ektni formaaning chap qismiga nisbatan joylashish o`rni (piksellarda).
Name – ob`ektning nomi. Ob`ekt nomining birinch xarfi lotin belgisi bilan boshlanishi shart.
ShowHint – kichik yordamni chiqarishga ruhsat berishni ta`minlaydi (True).
Tag – qo`shimcha xususiyat.
Top - ob`ektni formaganing yuqori qismiga nisbatan joylashish o`rni (piksellarda).
Transpared – ob`ekt fonini olib tashlash (True).
Visible – ob`ektni korsatish (True) yoki yashirish (False).
Width - ob`ekt uzunligi. (ob`ekt.Width := 15; ob`ekt uzunligi 150 pikselga teng).
Xodisalar
Delphida dasturchilar uchun dasturni soddalastirish maqsadida xodisa (Events) yo`lga qo`yilgan.
Xodisa – bu ob`ekt qismida bajariladigan amallar turdir. Misol uchu, ob`ekt sirtida Inter (Enter) tugmasining bosilishi, sichqonchaning chap yoki o`ng tugmasining bosilishi xodisadir.
Xodisa ro`yhatlari Object Inspector oynasining Events sahifasida joylashgan bo`ladi. U yerda OnClik, OnDBLClik, OnMouseMove kabi xodisalarni ko`rishimiz mumkin.
Xodisadan foydalanish uchu kerakli xodisaning o`ng qismida sichqonchaning chap tugmasi ikki marta bosiladi. Masalan Forma ob`ekti bosilganida qandaydir amal bajarish uchun. Form ob`ekti tanlanadi va Object Inspector/Events/OnClik ning sirtida sichqonchaning chap tugmasi ikki marta bosiladi. Yuqoridagi amallar ketma-ketligi bajarilganidan so`ng Delphining kodlar oynasida quyidagi prosedura hosil bo`ladi:
procedure TForm1.FormClick(Sender: TObject);
begin
end;
Biz unga quyidagi o`zgartirishni kiritamiz:
procedure TForm1.FormClick(Sender: TObject);
begin
MessageDlg('Salomlar !!!', mtInformation, [mbOk], 0);
end;
Yuqoridagi amallar bajarilgach, dastur ishga yuklanidan so`ng formaning istalgan qismida sichqonchaning chap tugmasi bosilsa quyidagi oyna hosil bo`ladi:
Yuqoridagi misoldan ko`rinib turibdiki, qandaydir xodisa ro`y berganida javob olish mumkin ekan. Ko`pchilik dasturchilar bu vaqtda qanday jarayon bo`layotganligini tushunmay dastur tuzadilar. Shuni aytish mumkinki, har-bir xodisa ro`y berganida operatsion sistema bu xodisani aniqlaydi va dasturga xodisaning turi xaqidagi xabarni uzatadi. Misol qilib forma sirtida sichqonchaning chap tugmasi bosilganida ro`y beradigan xodisani ko`rishmuz mumkin. Buning uchu xodisa sahifasidan OnMouseDown xodisasi tanlanadi va dasturga quyidagi o`zgartirish kiritiladi:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Canvas.TextOut(X, Y, 'X='+IntToStr(X)+' Y='+IntToStr(Y));
end;
Dasturni ishga yuklab forma sirtida sichqonchaning chap tugmasi bosilsa quyidagiga o`xshash natijani ko`rish mumkin:
Ko`rinib turibdiki, xodisalar bilan ishlash unchalik murakkab emas ekan. Yana bir misol sifatida quyidagi dasturni ko`rishimiz mumkin (OnKeyDown (tugmacha bosilganida) xodisasi):
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
MessageDlg(Chr(Key), mtInformation, [mbOk], 0);
end;
Dasturni ishga tushirib qanday natija chiqishini bilib olarsiz.
Yuqoridagi yozuvlardan foydalanib xodisa nima ekanligini bilb oldik. Endi yangi xodisa yaratishni ko`rib chiqamiz. Xodisa yaratishning umumiy ko`rinishi quyidagicha bo`ladi:
procedure Handler_Name(var Msg : MessageType); message WM_XXXXX;
bu erda
Handler_Name – uslub nomi;
Msg – uzatiluvchi parametr nomi;
MessageType - xabarga mos keluvch qandaydir bir tip;
message – xizmatchi so`zi joriy uslub xabarlarni qayta ishlovchi ekanligini bildiradi;
WM_XXXXX – konstanta yoki amal, yani Windows xabarini aniqlovchi nomer.
Xabarlarni qayta ishlashni misol yordamida ko`rib chiqamiz. Misol uchun sichqonchaning o`ng tugmasi forma sirtida bosilganida qandaydir xabarnoma chiqsin. Dastlab yangi proyekt yaratiladi (File/NewApplication). So`ngra kodlar oynasiga o`tiladi(F2). U yerda quyidagi dasturni ko`rishimiz mumkin:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
end.
Uni quyidagicha o`zgartiramiz:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMRButtonDown(var Msg: TWMMouse); message WM_RBUTTONDOWN;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMRButtonDown(var Msg : TWMMouse);
begin
MessageDlg('Sichqonchaning ung tugmasi bosildi.', mtInformation, [mbOK], 0);
end;
end.
Dastur ishga yuklanib forma sirtida shichqonchaning o`ng tugmasi bosilsa, quyidagi dialog oynasi hosil bo`ladi:
Test savollari
1. Memo -…?
A)* ko‘pqatorli matn muharriri. Ko‘pqatorli matnlarni kiritish yoki chiqarishda ishlatiladi
B) buyruq tugmasi. Bu komponent dasturchi tomonidan berilgan bir necha buyruqlarni bajarishda ishlatiladi
C) bog‘liq bo‘lmagan tanlash tugmasi. Dasturda bu komponent asosiy mantiqiy xossasi o‘zgartiradi.
D) bog‘liq bo‘lgan tanlash tugmasi. Yangi tuganlash tugmasi bosilganda, oldin tanlangan tugma atomatik ravishda ozod etadi
2. CheckBox -…?
A) ko‘pqatorli matn muharriri. Ko‘pqatorli matnlarni kiritish yoki chiqarishda ishlatiladi
B) buyruq tugmasi. Bu komponent dasturchi tomonidan berilgan bir necha buyruqlarni bajarishda ishlatiladi
C)* bog‘liq bo‘lmagan tanlash tugmasi. Dasturda bu komponent asosiy mantiqiy xossasi o‘zgartiradi.
D) bog‘liq bo‘lgan tanlash tugmasi. Yangi tuganlash tugmasi bosilganda, oldin tanlangan tugma atomatik ravishda ozod etadi
Ixtiyoriy ilovaning asosiy elеmеnti forma (kontеynеr) xisoblanadi. Formaga boshqa ko`rinadigan va ko`rinmaydigan komponеntalarni joylashtirish mumkin. Forma, foydalanuvchi nuqtai nazaridan, u ilova bilan ishlayotgan darchadir. Ilovaga kiritilgan xar bir yangi forma o`zining moduli (unit) ga ega. Modulda formada bajarishi kеrak bo`lgan funktsiya, protsеduralar kеltiriladi.
Odatda murakkab ilovalar bir nеchta formadan iborat bo`ladi. Yangi ilova (programma) tuzish uchun File mеnyusidan New Application komandasi tanlanadi. Odatda birinchi forma asosiy forma hisoblanadi. Ilovaga yangi forma qo`shish uchun File mеnyusidan New Form tanlanadi. Bir formadan boshqasiga o`tish uchun SHOW va ShowModal mеtodlaridan foydalanish mumkin.
ShowModal mеtodi joriy formani yopgandan kеyin boshqa formalar bilan ishlashga ruxsat bеradi. Bu mеtod opеrativ xotiralan unumli foydalanish uchun ishlatiladi.
Show va ShowModal mеtodlarini ayni vaqtda ko`rinmaydigan formalar uchun ishlatish mumkun. Agar formani ko`rinish ko`rinmasligi no`malum bo'lsa quyidagicha programma kodi kеltiriladi.
If (not Form2.visible) then Form2.ShowModal;
Show va ShowModal mеtodlari bajarilganda formaning Onshow xodisasi sodir bo`ladi. Hide mеtodi orkali formani ko`rinmaydigan kilish mumkun. Formani Close mеtodi orkali yopish mumkun. Bir nеchta forma bilan ishlaganda bir formadan boshkasiga utish uchun Shift+F12 tugmasi bosiladi.
Formaning bazi xususiyatlarini kўrib chikamiz.
1. + BorderIcons
1.1 biSystemMenu Formada sistеma mеnyusining ko`rinish ko`rinmasligi ta`minlaydi.
1.2 biMinimize Formani «свернуть» kilishga ruxsat bеrishni ta`minlaydi.
1.3 biMaximize Formani «Развернуть» kilishga ruxsat bеrishni ta`minlaydi.
2. WindowState
2.1 wsMaximized - Darchani tulik ekran xolida bulishni ta`minlash
2.2 wsMinimized - Darchani yigilgan («свернуть») xolida bulishni ta`minlash
2.3 wsNormal - Darchani normal xolda bulishni ta`minlash
Formaning bazi xodisalarini ko`rib chiqamiz.
1. OnActivate xodisasi qachonki forma aktiv bulganida yuz bеradi.
2. OnClose xodisasi qachonki forma yopilganida yuz bеradi.
3. OnCreate xodisasi qachonki forma yaratilganida yuz bеradi.
4. OnResize xodisasi qachonki forma ulchamlari uzgartirilganida (kattalashtirilganida yoki kichiklashtirilganida) yuz bеradi.
5. OnCloseQuery xodisasi qachonki forma yopilishi oldidan savol bilan murojaat qilish uchun ishlatiladi.
Misol: Forma yopilishi oldidan foydalanuvchidan Formani yopishni xohlaysizmi? dеb murojaat etish va Yes tugmasi bosilsa formani yopish programmasini ko`rib chiqamiz.
Formaning OnCloseQuery xodisasiga kiriladi va quyidagilar yoziladi.
if MessageDlg('Formani yopishni xohlaysizmi?',mtConfirmation,
[mbYes, mbNo], 0) = mrYes then CanClose := True
else CanClose := False;
MainMenu komponentasining asosiy xossasi Items xossasidir. U o‘zida ilova bosh menyusining nulinchi darajali elementlarini saqlaydi.
Ma’lumki Windows sistemasida sichqoncha o‘ng tugmasi bosilganda yordamchi menyu chiqadi. Bu menyuga “kontekstnoe menyu” deyiladi. Delphida bunday kontekst menyu tashkil qilish uchun maxsus vizual bo‘lmagan PopupMenu komponentasi mavjud. Bu komponenta Standart komponentalar palitrasida joylashgan bo‘lib, u belgili piktogrammaga ega.
M i s o l.
File, Edit va Run strukturaga ega bosh menyu va ular tanlanganda unga mos uning punktlariga o‘tish dastur ilovasi yaratilsin.
E ch i sh
1.YAngi ilova yaratamiz.
2.Formaga Standart komponentalar palitrasidan MainMenu komponentasini MainMenu1 nom bilan o‘rnatamiz. Buning uchun bu komponenta ikki marta tez-tez bosiladi.
3.MainMenu1 komponentasi Items xossasini o‘rnatamiz. Buning uchun Items xossasiga kirib, uning uch nuqtali tugmasini bosamiz. Natijada ekranda menyu konstruktori muloqot oynasi chiqadi.
4.Menyu konstruktori yordamida file, Edit, Run bosh menyu nomlarini va mos ularning buyruqlarini (New, Open, Save va boshqa elementlarini) kiritamiz. Buning uchun Caption xossasiga o‘tilib va kerakli buyruq yoziladi.
5. Menyu konstruktor oynasidan chiqamiz. Menyu punktlarini tanlaganda ularning reaksiyasini (ta’sinini) aniqlash uchun ularning har birini sichqonchada bir marta chiqillatamiz. Natijada kodlarni kiritish muharriri oynasi chiqadi va u erdan jarayonlarni qayta ishlash (On Click) uchun kerakli dastur kodlarini kiritamiz. Masalan, har bir punktga kirganligi haqida ma’lumot chiqaramiz. Ma’lumotni chiqarish uchun maxsus standart funksiya mavjud bo‘lib uning nomi ShowMessage deyiladi. New punkti uchun bu dastur kodi quyidagicha bo‘ladi.
procedure TForm1.New1Click(Sender: TObject);
begin
ShowMessage('New punkti');
end;
6. Tuzilgan loyiha (proekt) ya’ni Project1 va Unit1 standart modul nomlarini mos nomlar bilan almashtirib saqlaymiz.
7. YAngi nom bilan saqlangan proekt, ya’ni ilova F9 tugmachasini bosish bilan ishga tushuriladi.
Ilova ishga tushirilganda uning quyidagi ko‘rinishi ekranda namayon bo‘ladi.
Tashkil qilingan modulning to‘liq ko‘rinishini keltiramiz.
unit menu1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Edit1: TMenuItem;
Run1: TMenuItem;
New1: TMenuItem;
Open1: TMenuItem;
Save1: TMenuItem;
Close1: TMenuItem;
Cut1: TMenuItem;
Copy1: TMenuItem;
Past1: TMenuItem;
Delete1: TMenuItem;
RunF91: TMenuItem;
StepOver1: TMenuItem;
Exit1: TMenuItem;
Help1: TMenuItem;
procedure New1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
procedure Close1Click(Sender: TObject);
procedure Cut1Click(Sender: TObject);
procedure Copy1Click(Sender: TObject);
procedure Past1Click(Sender: TObject);
procedure Delete1Click(Sender: TObject);
procedure RunF91Click(Sender: TObject);
procedure StepOver1Click(Sender: TObject);
procedure Help1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.New1Click(Sender: TObject);
begin
ShowMessage('New punkti');
end;
procedure TForm1.Open1Click(Sender: TObject);
begin
ShowMessage('Open punkti');
end;
procedure TForm1.Save1Click(Sender: TObject);
begin
ShowMessage('Save punkti');
end;
procedure TForm1.Close1Click(Sender: TObject);
begin
ShowMessage('Close punkti');
end;
procedure TForm1.Cut1Click(Sender: TObject);
begin
ShowMessage('New punkti');
end;
procedure TForm1.Copy1Click(Sender: TObject);
begin
ShowMessage('New punkti');
end;
procedure TForm1.Past1Click(Sender: TObject);
begin
ShowMessage('New punkti');
end;
procedure TForm1.Delete1Click(Sender: TObject);
begin
ShowMessage('New punkti');
end;
procedure TForm1.RunF91Click(Sender: TObject);
begin
ShowMessage('New punkti');
end;
procedure TForm1.StepOver1Click(Sender: TObject);
begin
ShowMessage('New punkti');
end;
procedure TForm1.Help1Click(Sender: TObject);
begin
ShowMessage('New punkti');
end;
end.
M i s o l.
Open, Save va Font strukturaga ega kontekstli menyu (PopupMenu) yaratilsin. YUqoridagi 8-misoldagi proekt uchun qo‘shimcha kontekstli menyu punktlarining dastursi tuzilsin.
E ch i sh
1.YAngi ilova yaratamiz.
2. Misol formaga Standart komponentalar palitrasidan PopupMenu komponentasini ham PopupMenu1 nom bilan o‘rnatamiz. Buning uchun bu komponenta ikki marta tez-tez bosiladi.
3.PoupMenu1 komponentasining Items xossasiga o‘tamiz va uning uch nuqtali tugmasini bosamiz. Kontekst menyu elementlarini kiritamiz: Open, Save va Font.
4.Menyu konstruktoridan chiqmasdan Open, Save va Font buyruqlari uchun dastur kodi muharririni chaqiramiz. Ularning har biri uchun quyidagi dastur kodlarini kiritamiz.
procedure TForm1.Open1Click(Sender: TObject);
begin
Button1Click(Button1);
end;
procedure TForm1.Save1Click(Sender: TObject);
begin
Button2Click(Button2);
end;
procedure TForm1.Font1Click(Sender: TObject);
begin
Button3Click(Button3);
end;
Izoh! Bu erda qora yozilgan dastur kodlari kiritiladi. Qolganlari o‘zi mavjud. Bu qora yozilgan kodlar mos modul protseduralariga murojaatni anglatadi. Bu modul protseduralari oldin “Ochish”, “Saqlash” va “SHrift” tugmalari uchun yozilgan. Bu murojaatlarni yozmasdan ular o‘rniga “Ochish”, “Saqlash” va “SHrift” tugmalari uchun yozilgan dastur kodlarini yozsa ham bo‘ladi.
5.Tuzilgan loyiha (proekt) ya’ni Project1 va Unit1 standart modul nomlarini mos nomlar bilan almashtirib saqlaymiz.
6.YAngi nom bilan saqlangan proekt, ya’ni ilova F9 tugmachasini bosish bilan ishga tushuriladi.
Ilova ishga tushirilgandan keyin sichqonchaning o‘ng tugmasi bosilsa u quyidagi ko‘rinishda ekranda namayon bo‘ladi.
Test savollari
1. RadioButton -…?
A) ko‘pqatorli matn muharriri. Ko‘pqatorli matnlarni kiritish yoki chiqarishda ishlatiladi
B) buyruq tugmasi. Bu komponent dasturchi tomonidan berilgan bir necha buyruqlarni bajarishda ishlatiladi
C) bog‘liq bo‘lmagan tanlash tugmasi. Dasturda bu komponent asosiy mantiqiy xossasi o‘zgartiradi.
D)* bog‘liq bo‘lgan tanlash tugmasi. Yangi tuganlash tugmasi bosilganda, oldin tanlangan tugma atomatik ravishda ozod etadi
2. Button -…?
A) ko‘pqatorli matn muharriri. Ko‘pqatorli matnlarni kiritish yoki chiqarishda ishlatiladi
B)* buyruq tugmasi. Bu komponent dasturchi tomonidan berilgan bir necha buyruqlarni bajarishda ishlatiladi
C) bog‘liq bo‘lmagan tanlash tugmasi. Dasturda bu komponent asosiy mantiqiy xossasi o‘zgartiradi.
D) bog‘liq bo‘lgan tanlash tugmasi. Yangi tuganlash tugmasi bosilganda, oldin tanlangan tugma atomatik ravishda ozod etadi