U ovom i narednom prilogu pozabaviฤemo se procesom formiranja (kreiranja) osnovnog objekta Form (odnosno, popularno – prozora), i izmene osnovih parametara prozora radi prilagoฤavanja specifiฤnim potrebama (transparenteni prozori, prozori bez naslovne linije…). Pa, da preฤemo na stvar.
Kod kreiranja bilo koje kontrole koja nastaje iz osnovne klase TWinControl (kao ลกto su EditBox ili Button ili Form), metodom Create poziva se API funkcija CreteWindowEx. Ali pre poziva ove funkcije, prethodi poziv funkcije (virtuelne) CreateParams koja pripada klasi TForm, ลกto znaฤi da moลพete da izmenite podrazumevani izgled prozora pre njegovog samog formiranja i na taj naฤin ga prilagodite sopstvenim potrebama. Ova metoda (TCreateParams) sadrลพi strukturu podataka, ฤiji ฤe podaci posluลพiti kao parametri pri pozivu funkcije CreteWindowEx. Izmena parametara funkcije CreateParams je vrlo podesan naฤin za izmenu izgleda forme.
TCreateParams struktura je definisana sledeฤim parametrima:
type
TCreateParams = record
Caption: PChar; {naslov prozora}
Style: DWORD; {parametar stila prozora}
ExStyle: DWORD; {prosireni parametar stila}
X, Y: Integer; {osobine Left i Top}
Width, Height: Integer; {osobine Width i Height}
WndParent: HWND; {Parent prozor}
Param: Pointer {dodatni podaci}
WindowClass: TWndClass; {window klasa }
WinClassName: array[0..63] of Char; {naziv klase}
end;
I ovo nije sve, za kompletan uvid u strukturu i njena polja pogledajte odgovarajuฤe help fajlove koji dolaze uz Delphi. Kao ลกto smo gore naveli, kada se kreira forma CreateParams parametri su popunjeni i to uglavnom u design modu, kada popunjavamo odgovarajuฤa polja u Object Inspector-u. Na primer, parametri – polja Caption, Width i Height, sadrลพe podatke o naslovu, ลกirini i visini buduฤeg prozora – forme, a koje moลพemo podesiti preko Object Inspector-a. Meฤutim, postoji i nekoliko specijalnih situacija kada se ne moลพete osloniti na podrazumevani proces kreiranja prozora – na primer, kada vam je potrebno da prozor bude proziran ili sliฤno.
Kada ลพelimo da koristimo dodatne parametre u kreiranju CreateParams strukture, potrebno je da preskoฤimo proceduru CreateParams (neka vas ovo ne zbuni, i procedura i struktura imaju isti naziv). Tada ฤemo u private sekciju deklaracije forme ubaciri sledeฤu liniju:
…
private
procedure CreateParams
(var Params: TCreateParams); override;
…
A u sekciju implementation smestite sledeฤi kod:
procedure TForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);{kod za nadgradnju CreateParams vrednosti}
end;
Prva linija gornje procedure, inherited CreateParams(Params), mora biti uvek ukljuฤena u proceduru. Ona se koristi za poziv CreateParams klase TForm i popunjavanje podrazumevanim setom parametara.
Pratite Krstaricu na www.krstarica.com