HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

DBRadioButton komponens


Példaprogram letöltése

7250 bájt

A Data Controls palettán szinte az összes standard adatbeviteli komponensnek megtalálhatjuk az adatbázishoz kapcsolható változatát. Érdekes módon a RadioButton komponensnek nincs ilyen változata, pedig néha hasznos lenne. Van ugyan egy DBRadioGroup nevű komponens, de ez nem minden esetben jó, különösen a komponens kerete miatt, amit nem lehet eltüntetni, valamint a RadioButton komponenseket sem tudjuk tetszés szerint elhelyezni. Ebben a példában pótoljuk ezt a kis hiányosságot, és elkészítjük a RadioButton komponens adatbázishoz kapcsolható változatát.

A mellékelt példaprogram megnyitása előtt a DBRadioButtonReg.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens hasonlóan működik a DBRadioGroup komponenshez, de itt a RadioButton-okat külön-külön tudjuk kezelni. A RadioButton-ok jellemzője, hogy az azonos csoportba tartozó komponensek közül csak egy lehet bekapcsolva. A csoportot a normál RadioButton komponensnél a Parent property határozta meg, vagyis az azonos szülő komponenssel rendelkező komponensek egy csoportba tartoztak. Az új komponensnél a csoportot elsősorban a DataSource és a DataField property-k határozzák meg, de igazából ennek nincs jelentősége, mivel azt, hogy a komponens be van-e kapcsolva vagy sem, a komponenshez tartozó mező értéke határozza meg. Így ha két komponens ugyanahhoz a mezőhöz van kapcsolva, és a komponenshez tartozó érték is megegyezik, akkor akár mindkét DBRadioButton lehet bekapcsolt állapotban.
Az nyilvánvaló, hogy a DBRadioButton komponens nem logikai érték megadására szolgál, hiszen arra ott a DBCheckBox. Az új komponenst sztring, illetve valós vagy egész szám típusú mezőkhöz kapcsolhatjuk, és külön-külön megadhatjuk minden komponensnél, hogy milyen értéket írjon a mezőbe.
A komponenst a TRadioButton osztályból származtatjuk. Szükség lesz egy FieldDataLink osztályra, amivel az adatbázis kapcsolatot valósítjuk meg. A mező értékét a Value sztring típusú property-ben adhatjuk meg, szám esetén úgy, hogy az konvertálható legyen a megfelelő típusra.
Az új osztályban felülírjuk a SetChecked eljárást. Ha a Checked property értéke igazra változik, akkor beírjuk a mezőbe a Value property értékét. Ez ténylegesen az UpdateData eljárásban történik meg, ahol ellenőrizzük a mező típusát, és ennek megfelelően írjuk ki a Value property értékét.
Amikor egy másik rekordra pozícionálunk, akkor el kell dönteni minden egyes DBRadioButton-nál, hogy az adott mező a komponenshez tartozó értéket tartalmazza-e. Ez a DataChange eljárásban történik meg, ami automatikusan lefut, amikor az adatok megváltoznak (pl. egy másik rekordra pozícionálunk, vagy módosítjuk a mezőben tárolt adatot). Ebben az eljárásban összehasonlítjuk a mezőben tárolt adatot a Value property értékével, és meghívjuk a SetChecked eljárást a megfelelő paraméterrel. Ha a két adat megegyezik, akkor a paraméter igaz, ellenkező esetben pedig hamis. Az FChanging globális változót azért állítjuk igazra, hogy a SetChecked igaz paraméter esetén ne írja ki a Value property értékét a mezőbe, mivel ilyenkor az adatkészlet mindig Edit állapotba kerülne.

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