HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

RoolUpForm komponens


Példaprogram letöltése

18528 bájt

Néhány alkalmazásban találkozhatunk olyan ablakokkal, melyek fejlécén egy gomb található, amivel a Form-ot össze lehet „csukni” úgy, hogy csak a fejléce látszik. A gombra való újbóli kattintással a Form „kinyílik”. Most egy olyan komponenst készítünk, amit ráhelyezve egy Form-ra ilyen ablakot varázsolhatunk belőle.
A mellékelt példaprogram megnyitása előtt a RollUpForm.pas-ban lévő komponenst telepítenie kell a Delphi alá.

Két fő feladat van, amit a komponensnek meg kell oldania. Az első, hogy egy saját gombot jelenítsen meg a fejlécen, a másik, hogy tudja kezelni a Form-hoz érkező üzeneteket.

A komponens konstruktorában le kell cserélnünk a Form ablakkezelő eljárását a sajátunkra, hogy a Form-hoz érkező üzeneteket fel tudjuk dolgozni:
  with (Owner as TForm) do begin
    FOldWndProc:=WindowProc;
    WindowProc:=NewWndProc;
  end;
A NewWndProc eljárásban az üzeneteket felhasználva tudjuk a fejlécen megjeleníteni, illetve kezelni az új gombot. A gomb kirajzolását a DrawButton eljárás végzi. Ebben lekérdezzük a Form dc-jét (Device Context) a GetWindowDC függvénnyel, és létrehozunk egy TCanvas objektumot, amire a gombot rajzoljuk. Ahhoz, hogy a gomb a Form-on jelenjen meg, a Canvas Handle property-jének értékül kell adni a Form dc-jét. Így a Form teljes területére rajzolhatunk, beleértve a fejlécet és a kereteket is.
A gomb pozíciójának kiszámításához a GetButtonRect függvényt használjuk, ami egy TRect típusú struktúrában visszaadja a gomb koordinátáit. A pozíció kiszámításánál több dolgot is figyelembe kell venni. A fejléc gombjainak szélességét, a fejléc magasságát, valamint a keretek szélességét a GetSystemMetrics függvénnyel kérdezhetjük le. Ha ezek megvannak, akkor még azt is figyelembe kell venni, hogy a Form fejlécén mely gombok látszanak.

A komponens Active property-jében adható meg, illetve onnan olvasható ki, hogy a Form „összecsukott” állapotban van-e, vagy sem. Ha a property igaz értéket kap, akkor az FOriginalHeight változóban eltároljuk a Form kliens területének magasságát, majd beállítjuk a magasságot a komponens ClientHeight property-ben megadott értékre (OnRollUp esemény), ellenkező esetben pedig az FOriginalHeight változóban eltárolt értékre állítjuk be a Form ClientHeight property-jét (OnRollDown esemény).


Cikksorozat

#IDKategóriaCikk címeSorozat
1166DelphiOsztály hierarchia lekérdezése1. rész
1180DelphiOsztály hierarchia lekérdezése2. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 484. 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 |