9.1-rasm.
9.1-listing
unit polimor_;
interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = 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
// Manbaa sinf
TPerson = class
fName: string; // Ism
constructor Create(name:string);
function info:string; virtual;
end;
// Talaba sinfi1
TStud = class(TPerson) fGr:integer; // guruh raqami
constructor Create(name:string;gr:integer);
function info:string; override;
end;
// O'qituvchi sinfi TProf = class(TPerson)
fdep:string; // kafedra nomi
constructor Create(name:string;dep:string);
function info:string; override;
end;
const
SZL = 10; // ro'yhat o'lchami
var
Form1: TForm1;
List: array[1..SZL] of TPerson; // ro'yhat n:integer = 0; // ro'yhatdagi odamlar soni
implementation
{$R *.DFM}
constructor TPerson.Create(name:string);
begin
fName := name;
end;
constructor TStud.Create(name:string;gr:integer);
begin
inherited create(name); // manbaa sinf konstruktorini chaqirish fGr := gr;
end;
constructor TProf.create(name:string; dep:string);
begin
inherited create(name); // manbaa sinf konstruktorini
// chaqirish
fDep := dep;
end;
function TPerson.Info:string;
begin
result := fname;
end;
function TStud.Info:string;
begin
result := fname + ' ' + IntToStr(fGr)+' gr.';
end;
function TProf.Info:string;
begin
result := fname + ' ' + fDep+' kaf.';
end;
// Qo'shish tugmasini bosilishi
procedure TForm1.Button1Click(Sender: TObject);
begin
if n < SZL then begin
// ob'yektni ro'yhatga qo'shish n:=n+1;
if Radiobutton1.Checked
then // TStud ob'yektini yaratamiz List[n]:=TStud.Create(Edit1.Text,StrToInt(Edit2.Text))
else // TProf ob'yektini yaratamiz List[n]:=TProf.Create(Edit1.Text,Edit2.Text);
// kiritish maydonlarini bo'shatish Edit1.Text := '';
Edit2.Text := '';
Edit1.SetFocus; // Familiya maydoniga kursorni o'tkazish
end
else ShowMessage('Ro`yhat to`lgan!');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer; // indeks st:string; // ro'yhat begin
for i:=1 to SZL do
if list[i] <> NIL then st:=st + list[i].info + #13; ShowMessage('Ro`yhat'+#13+st);
end; end.
Qo’shish (Button1) tugmasi bosilishi bilan ishga tushuvchi TForm1.Button1Click protsedurasi TStud yoki TProf sinfiga tegishli bo’lgan List[n] ob’yektini yaratadi. Yaratilayotgan ob’yekt sinfi RadioButton tanlash maydonchasining holati bilan aniqlanadi. Tanlash maydonchasini Talaba holatiga o’rnatilsa TStud sinfi, O’qituvchi holatiga o’rnatilsa TProf sinfi aniqlanadi.
Ro’yhat (Button1) tugmasi bosilishi bilan ishga tushuvchi TForm1.Button2Click protsedurasi ro’yhatning har bir obyektiga info uslubini qo’llab, o’zida to’liq ro’yhatni mujassamlashtirgan satrni tashkil qiladi.
Delphining sinflari va ob’yektlari
Delphi o’z ishchi muhitini yaratish uchun sinflar kutubxonasidan foyadlanadi. Bu kutubxona forma va formaning turli komponentlarini (buyruq tugmalari, taxrirlash maydonlari va boshqalar) qo’llab-quvvatlovchi katta miqdordagi turli- tuman sinflardan tashkil topgan.
Ilova formasini loyihalash vaqtida Delphi dastur matniga zaruriy ob’yektlarni avtomatik tarzda qo’shadi. Delphida yangi forma ochilgan vaqtda dastur matnini tahrirlash oynasi ko’rilsa, u yerda quyidagi satrlarni ko’rish mumkin:
type
TForm1 = class(TForm) private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1
Agar dasturchi formaga kerakli kompnentlarni qo’shsa Delphi forma sinfining berilishiga ushbu qo’shilgan komponent e’lon qilinishini avtomatik tarzda qo’shadi. Agar dasturchi formaning yoki uning komponentining hodisasini qayta ishlash protsedurasini yozsa, Delphi forma sinfining berilishiga protsedura-uslub e’lon qilinishini avtomatik tarzda qo’shadi.
Sinflar kutubxonasiga vizual (ko’rinadigan) komponentalarning sinflaridan tashqari, vizual bo’lmagan ( ko’rinmaydigan) deb ataluvchi komponentalarning sinflari ham kiradi. Ular mos ravishda ob’yektlar yaratishni va ularning uslub va hususiyatlariga murojaat etishni ta’minlaydi. Vizual bo’lmagan komponentaga misol tariqasida taymer (TTimer), fayllarni ochish (TOpenDialog) yoki yozish (TSaveDialog) kabi komponentlarni keltirish mumkin.
Ma`ruza. Delphi ning grafik imkoniyatlari. Dum, barmoq va qalam. To’g’ri chiziq. Aylana va ellips. (2 soat)
O’quv modul birliklari:
Delphi ning grafik imkoniyatlari.
Dum, barmoq va qalam.
To’g’ri chiziq.
Aylana va ellips.
Aniqlashtirilgan o’quv maqsadlari:
Talaba ushbu mavzuni to’la o’zlashtirgandan so’ng:
Delphi ning grafik imkoniyatini o’rganadi.
Delphida qalam va mo’yqalam xususiyatlarini biladi
Delphi ning grafik imkoniyati yordamida turli figuralar chizish dasturlarini yarata oladi.
Delphi ning grafik imkоniyatlari
Delphi dasturchiga turli хildagi sхemalar, chizmalar va illyustratsiyalar bilan ishlash imkоniyatlarini beradi. Dastur grafikani оb’yekt (fоrma yoki kоmpоnent Image) sirtida hоsil qiladi. Оb’yekt sirti Canvas хususiyatiga mоs keladi. Grafik element (to’g’ri chiziq, aylana, to’g’ri to’rtburchak va х.k.)larni оb’yekt yuzasida hоsil qilish uchun Canvas dan fоydalaniladi.
Masalan, Form1.Canvas.Rectangle(10,10,50,50) instruktsiyasi dastur
оynasida to’g’ri to’rtburchak hоsil qiladi.
Chizma hоsil bo’luvchi sirt.
Yuqоrida aytib o’tilganidek, grafikani hоsil qiluvchi sirt (yuza) Canvas хususiyatiga to’g’ri keladi. O’z navbatida Canvas хususiyati TCanvas tipidagi оb’yektdir. Bu tip uslublari grafik primitivlarni (nuqta, chiziq, aylana va х.k.) hоsil bo’lishini ta’minlaydi, хususiyati esa hоsil bo’luvchi grafikani harakteristikalarini: rangi, chiziq qalinligi va turi; bo’yaluvchi hududni rangi va ko’rinishini; harfni harakteristikalarini beradi. Canvas «sirt», «chizish uchun yuza» sifatida tarjima qilinadi. Chizish yuzasi alоhida nuqta – piksyellardan tashkil tоpadi. Piksyelni jоylashuvi gоrizоntal (Х) va vertikal (Y) kооrdinatalar bilan harakterlanadi. Chap yuqоridagi nuqta kооrdinatasi (0,0). Kооrdinatalar yuqоridan pastga va chapdan o’ngga qarab o’sib bоradi (12-rasm).
(0,0)
(Image1.Width, Image1.Height) (Form1.ClientWidth,
Do'stlaringiz bilan baham: |