HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Property értékek megjelenítésének módosítása az Object Inspector-ban


OwnerDrawProperty 2. rész

Példaprogram letöltése

5363 bájt

A cikk második részében a property-k egyedi megjelenítésével kapcsolatos tudnivalók eddig nem tárgyalt lehetőségeiről lesz szó.

A mellékelt példaprogram megnyitása előtt az OwnerDrawProperty2.pas-ban lévő property szerkesztőt telepítenie kell a Delphi alá.
A TPropertyEditor osztály több olyan eddig még nem tárgyalt eljárást tartalmaz, amivel a property megjelenését módosíthatjuk. Az előző részben csak az érték mező, és a legördülő lista elemeinek kirajzolását végző eljárásokat használtuk fel. Ez utóbbihoz kapcsolódik még két olyan eljárás, melyekkel a lista elemeinek méretét szabályozhatjuk.
A példában a TFont osztály Name property-jének megjelenítését fogjuk módosítani. Az érték mezőben a betűtípus neve mellett zárójelben látható lesz a beállított betűtípussal és stílussal kiírva egy meghatározott szöveg. A szöveget tetszés szerint módosíthatjuk a forráskódban, vagy megadhatjuk a Registry-ben is az alábbi kulcs alatt elhelyezett Text nevű sztringben:
HKEY_CURRENT_USER\Software\AnimareSoftware\FontProperty
A legördülő listát is módosítjuk úgy, hogy a betűtípus neve alatt látható lesz 16 pontos betűvel, és a beállított stílussal kiírva a fenti szöveg, és az elemek egymástól egy vízszintes vonallal lesznek elválasztva.
A feladat megoldásához szükség van a lista elemeinek szélességét és magasságát meghatározó eljárások felülírására, mivel a normálméretű listába sem vízszintesen, sem pedig függőlegesen nem férne el a megjelenítendő kép.
ListMeasureWidth
Osztály: TPropertyEditor
procedure ListMeasureWidth(
const Value: string;
ACanvas: TCanvas;
var AWidth: Integer
);
Ezzel az eljárással a legördülő lista szélességét adhatjuk meg. Az eljárás minden egyes elemnél meghívódik, így ha szükséges, akkor minden elemnél kiszámolhatjuk a szélességet (mint ahogyan a mellékelt példában is tesszük). A tényleges szélesség a legnagyobb megadott érték lesz, de ez nem haladhatja meg az Object Inspector két oszlopának együttes szélességét.
Paraméterek
const Value: string
Minden értéknél egyenként megadhatunk egy szélességet, az elem értékét pedig ebben a paraméterben kapjuk meg.
ACanvas: TCanvas
Ebben a paraméterben megkapjuk a Canvas objektumot, amire a rajzolás történik. Ez nagyon jól jön, amikor a szélességet a kiírandó érték szélessége alapján kívánjuk megadni. Ezt tesszük a mellékelt példában is.
var AWidth: Integer
Ebben a paraméterben kell megadnunk a szélességet.
A lista elemeinek magasságát is meg kell adnunk. Ezt fixen 32 pixelben határozzuk meg, ebben a legtöbb betűtípus elfér az általunk megvalósított megjelenítési módnál.
ListMeasureHeight
Osztály: TPropertyEditor
procedure ListMeasureHeight(
const Value: string;
ACanvas: TCanvas;
var AHeight: Integer
);
A paraméterek ugyanazok, mint a ListMeasureWidth eljárásnál, kivéve az utolsót, amiben az elem magasságát kell megadnunk. Itt viszont nem a legnagyobb megadott érték lesz a mérvadó, hanem minden egyes elemnek egyedi magasságot adhatunk meg.
Paraméterek
const Value: string
A listában megjelenítendő érték.
ACanvas: TCanvas
A Canvas objektum, amin a lista megjelenik.
var AHeight: Integer
Ebben a paraméterben kell megadni az adott elem magasságát.
Még a mellékelt példában sem használtunk ki minden lehetőséget, mivel a property nevének (az Object Inspector első oszlopa) megjelenítését is elvégezhetjük mi magunk. Ehhez csupán a PropDrawName eljárást kell felülírnunk.
PropDrawName
Osztály: TPropertyEditor
procedure PropDrawName(
ACanvas: TCanvas;
const ARect: TRect;
ASelected: Boolean
);
Ezt az eljárást az előző részben ismertetett PropDrawValue eljáráshoz hasonlóan használhatjuk.
Paraméterek
ACanvas: TCanvas
A Canvas objektum, amin a property nevét meg kell jeleníteni.
const ARect: TRect
A property név mezőjének területét tartalmazó paraméter.
ASelected: Boolean
A paraméter értéke igaz, ha a property a kijelölt, és hamis, ha nem.

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 128. 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 |