HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Komponens fejlesztés haladóknak


14. rész

Példaprogram letöltése

10565 bájt

Tegyük fel, hogy egy-egy TDBGrid komponens alá szeretnénk elhelyezni egy TStatusBar komponenst, melyen annyi kis panelt helyeznénk el, ahány mezője van a TDBGrid-hez kapcsolt adatbázisnak.

Ekkor minden egyes oszlop alá kiírathatunk egy tetszőleges értéket. Például, ha az egyik mező számokat tartalmaz, akkor az ehhez tartozó panelon megjeleníthetjük az adott oszlop összegét.

Ezt persze megtehetjük magunk is. Felteszünk egy TStatusBar-t a Form-ra. Méretét beállítjuk a TDBGrid alá, felveszünk annyi panelt, amennyi oszlopa van a TDBGrid-nek, majd ezeknek beállítjuk a szélességét az oszlop szélességet figyelembe véve. Nos ez a tizedik TDBGrid után már igen unalmas feladat lesz.

Hogy ne legyen szükségünk arra, hogy mindezt "kézzel" kelljen beállítani, kiegészítjük a TStatusBar komponens gyors menüjét néhány menüponttal, melyek kiválasztáskor elvégzik ezt a feladatot.

Tegyük fel, hogy egy-egy TDBGrid komponens alá szeretnénk elhelyezni egy TStatusBar komponenst, melyen annyi kis panelt helyeznénk el, ahány mezője van a TDBGrid-hez kapcsolt adatbázisnak.

Ekkor minden egyes oszlop alá kiírathatunk egy tetszőleges értéket. Például, ha az egyik mező számokat tartalmaz, akkor az ehhez tartozó panelon megjeleníthetjük az adott oszlop összegét.

Ezt persze megtehetjük magunk is. Felteszünk egy TStatusBar-t a Form-ra. Méretét beállítjuk a TDBGrid alá, felveszünk annyi panelt, amennyi oszlopa van a TDBGrid-nek, majd ezeknek beállítjuk a szélességét az oszlop szélességet figyelembe véve. Nos ez a tizedik TDBGrid után már igen unalmas feladat lesz.

Hogy ne legyen szükségünk arra, hogy mindezt "kézzel" kelljen beállítani, kiegészítjük a TStatusBar komponens gyors menüjét néhány menüponttal, melyek kiválasztáskor elvégzik ezt a feladatot.


A mellékelt példaprogram megnyitása előtt a DBGridStatusBar.pas-ban található komponens szerkesztőt előbb telepítenie kell a Delphi-be (ne lepődjön meg, ha a nem jön létre új komponens a palettán!)

Megoldásként szükségünk lesz egy új komponens szerkesztő osztályra, mely a fent leírt funkciót elvégzi. Ehhez létrehozunk egy új osztályt a TDefaultEditor-ból származtatva.

A TStatusBar gyorsmenüjét úgy egészítjük ki, hogy annyi menüpontot hozunk létre, ahány TDBGrid komponens található az adott Form-on. Így az adott menüpont kiválasztásával egyértelműen el tudjuk dönteni, hogy melyik TDBGrid-hez kell igazítani a TStatusBar komponenst.

Mikor szerkesztési időben a jobb gombbal kattintunk egy TStatusBar-on, akkor hívja meg a Delphi a komponens szerkesztőnk GetVerbCount függvényét annak lekérdezésére, hogy hány menüpontot szeretnénk megjeleníteni. Ekkor kell megszámlálnunk, hogy a Form-on hány darab TDBGrid komponens található.

Az egyes menüpontok nevét a GetVerb függvénnyel kérdezi meg tőlünk a Delphi. Ekkor paraméterként kapunk egy számot, mely a menüpont sorszámát fogja megmondani számunkra. Visszatérési értékként pedig az előbbi GetVerbCount függvény hívásnál eltárolt TDBGrid komponensek nevét fogjuk visszaadni.

Ha kiválasztunk egy menüpontot, akkor hívja a Delphi az ExecuteVerb eljárásunkat. Itt szintén egy számot kapunk melyből megtudhatjuk, hogy hányadik menüpont lett kiválasztva.

Ekkor hozzáigazítjuk a komponenst a választott TDBGrid-hez és létrehozunk annyi panelt, ahány mezője van a hozzákapcsolt adatbázisnak.

Felhívnánk a figyelmet, hogy a komponens szerkesztő nem lett felkészítve minden lehetőségre. Így például nincs megoldva, hogy ha a felhasználó futási időben változtatja a TDBGrid-en az oszlopok szélességét, akkor a TStatusBar paneljei kövessék ezt. Az sem megoldott továbbá, hogy ha változik az adatbázis szerkezete, akkor frissüljön a TStatusBar.

Ezzel a példaprogrammal viszont nem is ez volt a cél, hanem hogy bemutassuk azt, hogy miként készíthetünk egy már meglévő Delphi komponenshez új menüpontokat, tetszőleges funkciókkal. Ez alapján könnyedén készíthetünk más komponenshez is egyedi menüt.


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