HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Object Inspector-hoz hasonló adatbeviteli komponens


Példaprogram letöltése

9680 bájt

A Delphi 6-ban megjelent többek között egy olyan komponens, amelynek segítségével az Object Inspector-hoz hasonló módon tudunk adatokat szerkeszteni. Ebben a példában egy ehhez hasonló komponenst készítünk, kiegészítve még néhány lehetőséggel, ráadásul ez a komponens régebbi Delphi verziókban is használható. Az értékek előtt megjeleníthetünk képeket, beállíthatunk legördülő listát, vagy csak egyszerű gombot dialógus ablak megjelenítéséhez, stb.

A mellékelt példaprogram megnyitása előtt a ValueListGrid.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A készítendő komponens leginkább egy StringGrid-re hasonlít, ezért célszerű a TCustomgrid osztályból származtatni. Ennek ráadásul rengeteg olyan property-je és metódusa (függvénye) van, amit jól tudunk majd használni az új komponensnél, és nem kell ezeket külön leprogramoznunk.
Míg a Delphi 6 komponensben csak egy érték=név párokat tartalmazó sztring listát adhatunk meg, addig itt az egyes értékeknél rengeteg tulajdonságot is megadhatunk. Ebből következik, hogy az értékeket tartalmazó property-nél nem elég egy TStringGrid osztályt használni, hanem a TCollection és TCollectionItem osztályból származtatott új osztályokat kell létrehoznunk. Az egyes értékekhez tartozó osztály a TValueListValue lesz, az alábbi property-kkel:
ImageIndex
Osztály: TValueListValue
property ImageIndex: TImageIndex;
Az érték neve előtt megjelenő kép indexét adhatjuk meg ebben a property-ben.
Caption
Osztály: TValueListValue
property Caption: string;
Az érték nevét adhatjuk meg ebben a property-ben. Ez jelenik meg az első oszlopban.
Value
Osztály: TValueListValue
property Value: string;
Ez a property tartalmazza az értéket sztring formátumban. Ha a megadott értéket nem sztringként akarjuk felhasználni, akkor konvertálni kell a megfelelő formátumra.
ValueAlignment
Osztály: TValueListValue
property ValueAlignment: TAlignment;
Az érték igazítását adhatjuk meg a cellán belül. Az igazítás történhet balra, középre és jobbra egyaránt.
EditMask
Osztály: TValueListValue
property EditMask: string;
A szerkesztéshez használt maszkot adhatjuk meg ebben a property-ben, ugyanúgy mint a TMaskEdit komponensnél.
MaxLength
Osztály: TValueListValue
property MaxLength: integer;
Az érték maximális hosszát határozza meg ez a property. Ha az értéke 0, akkor a hossz nincs korlátozva.
ButtonStyle
Osztály: TValueListValue
property ButtonStyle: TEditorButtonStyle;
Az egyes értékeknél megadhatjuk, hogy akarunk-e gombot használni a cellában. A gombnak kétféle típusa lehet:
  • legördülő lista (bsDropDown): a gombra kattintáskor egy legördülő lista jelenik meg, amelyben a PickList property-ben megadott elemek jelennek meg.
  • dialógus gomb (bsEllipsis): a gombra kattintáskor tulajdonképpen nem történik semmi, csak generál egy OnButtonClick eseményt (ezt a másik gomb típusnál is megteszi).
PickList
Osztály: TValueListValue
property PickList: TStringList;
Ez egy TStringList típusú property, amelyben a mezőben használható lehetséges értékeket sorolhatjuk fel. Csak akkor van értelme megadni, ha a ButtonStyle property értéke bsDropDown.
DropDownCount
Osztály: TValueListValue
property DropDownCount: integer;
A legördülő lista látható elemeinek számát adhatjuk meg ebben a property-ben. Ha ennél kevesebb elemet tartalmaz a lista, akkor az elemek számához lesz igazítva a lista magassága.
Editable
Osztály: TValueListValue
property Editable: boolean;
Ha ennek a property-nek az értéke hamis, akkor a mezőben lévő adatot nem tudjuk módosítani. Akkor használható ki, ha legördülő listát, vagy dialógus ablakot használunk az érték megadására, és el akarjuk kerülni, hogy a felhasználó hibás adatot visz be.
OnChange
Osztály: TValueListValue
property OnChange: TNotifyEvent;
Ha a mezőben lévő adat megváltozik, akkor létrejön ez az esemény. Ez már akkor is megtörténik, ha a felhasználó gépeli be az adatot a mezőbe (ugyanúgy, mint a TEdit komponens OnChange eseményénél).
Szó volt róla, hogy a mezőben megjeleníthető egy gomb is. Ehhez viszont létre kell hoznunk egy új osztályt a TInplaceEdit osztályból származtatva, amelyen belül létrehozzuk a gombot. Amikor a komponens CreateEditor függvénye lefut, akkor egy ilyen új típusú objektumot hozunk létre, amelyben kívánság szerint megjeleníthető a gomb. Az új osztály neve TInplaceEditor lesz.
Most nézzük, hogy maga a komponens milyen property-kkel rendelkezik:
Values
Osztály: TValueListGrid
property Values: TValueListValues;
Ebben a property-ben vehetjük fel a megadható értékek adatait.
Images
Osztály: TValueListGrid
property Images: TImageList;
Ebben a property-ben egy TImageList objektumot adhatunk meg, amely a nevek előtt megjeleníthető képeket tartalmazza.
KeyColumn
Osztály: TValueListGrid
property KeyColumn: TValueListColumn;
Az első oszlop fejlécének adatait adhatjuk meg ebben a property-ben: az oszlop fejlécének feliratát, és a felirat igazítását, valamint az oszlop szélességét. Ez utóbbi nem kerül tárolásra, ezért futási időben kell megadni a megfelelő értéket.
ValueColumn
Osztály: TValueListGrid
property ValueColumn: TValueListColumn;
A KeyColumn-hoz hasonló property, amelyben az érték oszlop fejlécének adatait adhatjuk meg.
OnButtonClick
Osztály: TValueListGrid
property OnButtonClick: TNotifyEvent;
Ez az esemény akkor jön létre, amikor a felhasználó a mezőben megjelenő gombra kattint.
ActiveValue
Osztály: TValueListGrid
property ActiveValue: integer;
Ebből a property-ből az aktuálisan szerkesztett érték sorszámát olvashatjuk ki.

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