HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Form stílusának beállítása, annak létrehozása előtt


Avagy a CreateParams struktúra használata

Példaprogram letöltése

9346 bájt

A ma bemutatásra kerülő cikkben megismerkedhetünk annak a lehetőségével, hogy miként változtathatjuk meg egy Form megjelenését még azelőtt, hogy létrehoznánk azt. Így például készíthetünk átlátszó, süllyesztett, fejléc nélküli, vagy mindig látszó ablakokat, mindezzel egyedivé téve az alkalmazásunkat.

Amikor a Delphi létrehoz egy komponenst, mely a TWinControl osztályból származtatható (például egy EditBox, Button vagy Form), az adott objektum Create metódusa meghívja a CreateWindowEx API függvényt, mely létrehozza az aktuális ablakot. Mielőtt azonban ez megtörténne, végrehajtódik a CreateParams metódus, melyben a létrehozandó ablak stílusa van eltárolva, és amely egy virtuális metódusa a TForm osztálynak. Ez azt jelenti, hogy felülírható, így akár igényeink szerint beállíthatjuk a létrehozandó ablak stílusát. Feltölthetünk egy TCreateParams típusú adatstruktúrát, mely az adott ablak jellemzőit tárolja, és melyek paraméterként kerülnek a CreateWindowEx függvényhez.
Lássuk ennek az adatstruktúrának a felépítését.
type
TCreateParams = record Caption: PChar; Style: DWORD; ExStyle: DWORD; X, Y: Integer; Width, Height: Integer; WndParent: HWND; Param: Pointer; WindowClass: TWndClass; WinClassName: array[0..63] of Char;
end;
Paraméterek
Caption: PChar
Az ablak fejlécének szövege.
Style: DWORD
Stílus flag, mely a létrehozandó ablak stílusát határozza meg.
ExStyle: DWORD
Kiterjesztett stílus flag, további stílus beállításokat tesz lehetővé.
X, Y: Integer
Az ablaknak a képernyő bal, illetve felső szélétől való távolsága.
Width Height: Integer
Az ablak szélessége és magassága.
WndParent: HWND
Szülőablak leírója.
Param: Pointer
Egy paraméterre mutat, melyet az LParam változóban adunk át a WM_CREATE Windows üzenetnek.
WindowClass: TWndClass
A létrehozandó ablak osztályának információit tartalmazza.
WinClassName: array[0..63] of Char
A létrehozandó ablak osztályának megnevezése.
Néhányukat közvetlenül az Object Inspector-ból is beállíthatunk tervezési időben. Így például az ablak Caption, Left, Top, Width és Height paramétereit.
A mellékelt példaprogramban láthatunk néhány példát a CreateParams struktúra és a különböző stílusok használatára. Ahhoz, hogy a beállításaink érvényesüljenek, felül kell írnunk az alapértelmezett CreateParams metódust. Ezt a Form Private részében tehetjük meg.
...
private
  procedure CreateParams
     (var Params: TCreateParams); override;
...
Nézzük, hogyan hozhatunk létre egy süllyesztett keretű ablakot, a WS_EX_OVERLAPPEDWINDOW kiterjesztett stílus használatával.
procedure TForm3.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle OR WS_EX_OVERLAPPEDWINDOW;
end;
Hasonlóképpen hozhatunk létre Stay On Top, azaz mindig látszó alkalmazást is, a WS_EX_TOPMOST stílus használatával.
procedure TForm5.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do begin
    ExStyle := ExStyle or WS_EX_TOPMOST;
    WndParent := GetDesktopwindow;
  end;
end;
A mellékelt programban további stílusokra is találhatunk példákat.
A CreateParams metódus minden olyan komponensnél felhasználható, mely a TWinControl osztályból származik, így például egy nyomógombnak többsoros feliratot adhatunk, amennyiben hozzáadjuk a BS_MULTILINE stílust. Ügyeljünk azonban arra, hogy a különböző komponenseknek megvan a saját stíluskészletük.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 591. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |