Delphi – Kreiranje prozora (I deo)

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