HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Nem 3D-s kinézetű CheckBox és DBCheckBox komponensek


Példaprogram letöltése

7376 bájt

Ebben a példában olyan CheckBox komponenseket készítünk, melyek kinézete property-ken keresztül befolyáslható úgy, hogy közben nem kell egyetlen bitképet sem megadni. Első ránézésre az eredeti CheckBox komponenstől abban különbözik, hogy a jelölőnégyzet mérete változtatható, és a bekapcsolt állapotot reprezentáló jel is megváltoztatható. A komponensnek mind a normál, mind pedig az adatbázishoz kapcsolható változata is megtalálható ebben a példában.

A mellékelt példaprogram megnyitása előtt a FlatCheckBox.pas-ban lévő komponenst telepítenie kell a Delphi alá.
A két komponens alapvetően nem sokban tér el egymástól, ezért érdemes egy közös osztályt létrehozni, amelyből származtatjuk őket. A komponensek a felhasználásukat tekintve megegyeznek az eredeti ChekBox komponensekkel, mégis érdemes a TCustomControl osztályból származtatni őket. A közös osztály a TCustmFlatCheckBox lesz.
Nézzük először, hogy milyen property-ket hoztunk létre. A BorderStyle property-ben megadhatjuk a jelölőnégyzet keretének stílusát. Összesen háromféle megjelenítési módja lehet, ezek a következők.
  • bs3Dstyle: az eredeti 3D-s megjelenítés;
  • bsFlat: egyszerű megjelenítés a BorderClor property-ben megadott színnel. A keret szélessége megegyezik az előzőével;
  • bsFlatThick: ugyanaz, mint az előző, de a keret szélessége csak fele az előbbieknek.
A BorderColor property-ről már volt szó, de a komponens többi elemének a színét is megadhatjuk. A CheckBoxColor property a jelölőnégyzet háttérszínét határozza meg, a CheckSignColor pedig a bekapcsolt állapotot jelző jel színét. A jel képét a CheckSign property-ben tudjuk megadni. Ennek értéke kétféle lehet:
  • csTick: az eredeti „pipa”;
  • csCross: X jel (mint a CheckBox komponens ikonján a komponens palettán).
Ha az AutoSize property értéke igaz, akkor a komponens mérete automatikusan beállítódik úgy, hogy a jelölőnégyzet és a Caption property (vagyis a felirat) is teljes egészében látszódjon. A ReadOnly property-vel beállíthatjuk, hogy a komponens csak olvasható legyen, tehát a felhasználó nem tudja módosítani a Checked property értékét. Ez utóbbi property a CheckBox be-, illetve kikapcsolt állapotát jelzi.
Mivel a komponensnek van Caption property-je, ezért a Constructor-ban megadjuk a csSetCaption tulajdonságot is a ControlStyle property-ben. Ehhez szükség van még a CM_TEXTCHANGED üzenethez és egy üzenetkezelő eljáráshoz is. A felirat betűtípusát a Font property-ben lehet megadni. Ahhoz viszont, hogy ennek változásáról értesítést kapjunk, szükség lesz egy eljáráshoz a WM_FONTCHANGE üzenetre.
A komponens természetesen tudja birtokolni a fókuszt, amit a megjelenítésben jelezni is kell. Ahhoz viszont, hogy értesüljünk róla, hogy a komponens megkapta a fókuszt, vagy éppen elvesztette, a WM_SETFOCUS és a WM_KILLFOCUS üzenetekhez kell eljárásokat írnunk.
Az AutoSize property miatt szükség van rá, hogy értesüljünk a komponens méretének megváltozásáról is. Ehhez csupán a Resize eljárást kell felülírnunk.
Létrehozunk egy Change eljárást, amelyben az OnChange property-ben megadott eseménykezelő eljárást hívjuk meg.
A Checked property értékét a felhasználó a komponensre történő kattintással, vagy a billentyűzetről a szóköz illetve enter billentyűvel módosíthatja. Előbbihez csak a Click eljárást kell felülírni, utóbbihoz viszont a WM_KEYDOWN üzenethez kell eljárást készíteni.
A komponens megrajzolása a szokásos Paint eljárásban történik. A jelölőnégyzet megrajzolása a Windows által is használt Marlett betűtípussal történik, amelyben megtalálható a jelölőnégyzet megrajzolásához szükséges összes elem.
Az első komponens egyszerűen megoldható, csak a property-ket kell publikussá tenni. A másodiknál, mivel itt már adatbázis kapcsolat is van, sokkal több tennivaló van. Az adatbázis kapcsolat létesítéséhez szükség lesz egy TFieldDataLink típusú objektumra, valamint egy DataSource és egy DataField property-re. Ez utóbbihoz egy olyan property szerkesztőt is készítettünk, amely csak a Boolean típusú mezők megadását teszi lehetővé.

Cikksorozat

#IDKategóriaCikk címeSorozat
1018DelphiVonalkód készítő komponens1. rész
1028DelphiVonalkód nyomtatása a QuickReport-al2. rész


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