Delphi – Kreiranje prozora (II deo)

U prethodnom prilogu smo vas upoznali sa procesom kreiranja forme, a sada ćemo vam prikazati situaciju kada je potrebno da „preskočite“ proceduru CreateParams, u cilju postizanja određenih ciljeva. Recimo da želite da svaka forma vaše aplikacije poseduje posebno dugme na Taskbar-u, tada ćemo morati da napravimo par izmena. Inače, podrazumevano je da svaka Delphi aplikacija poseduje samo jedno dugme na Taskbar-u, bez obzira na broj formi koji poseduje. Kada, na primer, minimizirate vašu glavnu (main) formu, tada će „nestati“ i sve ostale forme koje pripadaju datoj aplikaciji. Ako zaželite da imate zasebno dugme na Taskbar-u za svaki sekundarni prozor, biće potrebno da izmenite dodatni parametar stila forme. Ako dodamo WS_EX_APPWINDOW deo parametru ExStyle forme, data forma se neće minimizirati kada se minimizira glavna forma aplikacije. A evo i kako treba da izgleda struktura CreateParams:


procedure TForm1.CreateParams
(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle
or WS_EX_APPWINDOW;
end;

Međutim, ovakav prilaz ima određene neželjene nuspojave. Ukoliko kliknete na Taskbar dugme sekundarne forme, u momentu dok je aktivna forma neke druge aplikacije, ovim će se sve forme aplikacije prebaciti u frontalni deo. Razlog ovakvom ponašanju leži u činjenici da su sve sekundarne forme vezane za glavnu formu kao „roditelja“. Jedno od polja u TCreateParams strukturi je i WndParent, koji vodi računa o upravljanju prozorom koji je kontrolisan od strane drugog prozora (od onog iz koga je kreiran). Promenom ove osobine možemo ukloniti vezu ka roditeljskoj formi i usmeriti je ka Desktop-u. Tada će kod izgledati na sledeći način:


procedure TForm1.CreateParams
(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do begin
ExStyle := ExStyle or WS_EX_APPWINDOW;
WndParent := GetDesktopwindow;
end;
end;

Pratite Krstaricu na www.krstarica.com