Tulajdon szerkesztők létrehozása

Kétféleképpen módosíthatja a tulajdonságokat az Object Inspector ablakban. Az egyik az, hogy a felhasználó képes legyen szerkeszteni a tulajdonságokat szöveget. Egy másik megköveteli egy speciális párbeszédpanel létrehozását, amelyben az objektum szerkesztésre kerül. Bizonyos esetekben mindkét módszert egy adott tulajdonság szerkesztéséhez kell használni.

2. Szerkessze a tulajdonságot szövegként.

3. Szerkessze a tulajdonságot a párbeszédpanelen (opcionális).

Mindezeket a lépéseket a következő szakaszokban részletesen ismertetjük.

(például "A" .. "Z")

Toda, azaz események

Int64 és származékai

Ha egynél több összetevő van kiválasztva

Tulajdonság szerkesztése szövegként

Például, fontolja meg a TIntegerProperty osztály definícióját a modulban

function GetValue: string; felülbírálhatja;

eljárás SetValue (const Érték: karakterlánc); felülbírálhatja;

Amint látja, a GetValue () és a SetValue () metódusokat felülírják. A GetValue () metódus végrehajtása a következő:

funkció TIntegerProperty.GetValue: string;

De a SetValue () módszer végrehajtása:

eljárás: TIntegerProperty.SetValue (const érték: karakterlánc);

GetTypeData (GetPropType) ^ csinál

ha (L MaxValue)

12.2 táblázat. A TPropertyEditor osztály tulajdonságainak olvasására és írására szolgáló módszerek

Ez túl egyszerű, ezért bonyolítjuk a feladatot. Tegyük fel, hogy a felhasználónak lehetőséget kell adnia arra, hogy kétféle módot válasszon a bolygó beállításához. Írd be a bolygó nevét, például Venus vagy VENUS. vagy VeNuS. vagy bejutni a bolygó helyzetébe a naprendszerben. Tehát a Vénusz esetében ez a pozíció megegyezik a 2-tel.

Az alábbiakban a TPlanet összetevő forráskódja:

TPlanetName = típusa Integer;

tulajdonság PlanetName: TPlanetName olvassa el az FPlanetName nevet

Mint látható, ez az összetevő elég kicsi. A TPlanetName típusnak csak egy PlanetName tulajdonsága van. A TPlanetName típusának speciális definíciója lehetővé teszi, hogy saját információkkal rendelkezzen a végrehajtási idő típusairól, és maradjon az egész számmal.

az interfészWindows, SysUtils, DesignEditors;

function GetValue: string; felülbírálhatja;

eljárás SetValue (const Érték: karakterlánc); felülbírálhatja;

PlanetNames: a [1..9] string [7] = ("Mercury", "Venus", "

"Föld", "Mars", "Jupiter", "Szaturnusz",

"Uranusz", "Neptunusz", "Plútó");

függvény TPlanetNameProperty.GetValue: string;

eljárás TPlanetNameProperty.SetValue (const Érték: karakterlánc);

i, ValErr: Integer;

PlanetNames. Ha egy találatot talál, akkor a i

10-nél kisebb értéket vesz igénybe.>

míg (PName <> UpperCase (PlanetNames [i])) és (i <10) do

Állítsa be az értéket, és lépjen ki az eljárásból.>

ha i <10 then begin // Название планеты введено правильно.

a bolygó nem létező neve. Használja a Val funkciót a

a beírt szám ellenőrzése. Ha a ValErr nem egyenlő

nulla, a bolygó neve helytelenül van megadva. egyébként

Ha a beírt számot ellenőrizte a tartozékon

tartomány (0

Val (Value, i, ValErr);

ha ValErr <> 0 majd

Formátum ("Sajnálom, Soha nem hallottam a bolygóról% s", [Érték]));

ha (pl <= 0) or (i>= 10)

emelje az Exception.Create ("Sajnálom, hogy a bolygó nincs a Naprendszerünkben"); SetOrdValue (i);

Határozzon meg egy sor tömb állandót a Naprendszer bolygóinak képviseletére, attól függően, hogy milyen helyzetben vannak a Naphoz viszonyítva. Ezek a sorok lesznek felelősek a bolygók sztring ábrázolásáért az objektum-ellenőrző ablakban.

Amint már említettük, felül kell hagynunk a GetValue () és a Set-Value () metódusokat. A GetValue () metódus egy stringet visz vissza a PlanetNames tömbből. Ezt a tömböt ingatlanértékek indexelik. Természetesen az ingatlan értékének 1-9 tartományban kell lennie. Ezért a felhasználónak nem szabad megadnia a SetValue () metóduson kívüli számot.

A SetValue () metódus megkapja az objektumellenőrző ablakban megadott karakterláncot. ezt

A sztring lehet a bolygó neve vagy a pozíciót meghatározó szám

bolygón. A kód logikája határozza meg, hogy a bolygó nevét vagy annak számát helyesen adta-e be, és ha igen, a megfelelő érték a tulajdonhoz rendelt a SeTOrValue () módszerével. Ha a felhasználó helytelen bolygó nevét vagy érvénytelen számot adott meg, akkor megfelelő kivételt kap.

eljárás RegisterPropertyEditor (PropertyType: PTypeInfo; ComponentClass: TClass; const Tulajdonságnév: string;

RegisterPropertyEditor (TypeInfo (TPlanetName), TPlanet, 'PlanetName', TPlanetNameProperty); KÓD

az összetevő modulban, amint azt a 12.5. 12.5. Planet.pas - komponens TPlanet egység Planet;

TPlanetName = típusa Integer;

tulajdonság PlanetName: TPlanetName olvassa el az FPlanetName nevet

Kapcsolódó cikkek