Tehnika Krstarice > Programiranje > Delphi - Kreiranje prozora (II deo)

Delphi - Kreiranje prozora (II deo)

28.08.2001.

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;

Preporučite ovaj članak

Članak još uvek nije ocenjen.