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