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