ПредишенСледващото

Редактиране на свойствата в прозореца на обекта инспектор по два начина. Един от тях е да се даде възможност на потребителя да редактира свойствата като низове от текст. Друг изисква създаването на специален диалогов прозорец, в който работи за редактиране на свойства. В някои случаи е необходимо да се използват и двата начина за редактиране на една собственост.

2. Редактиране на свойствата като текста.

3. Редактиране на имотите в диалоговия прозорец (по избор стъпка).

Всички тези стъпки са разгледани подробно в следващите раздели.

ПРАВИТЕЛСТВЕНИ комплекти (например "А" .. "Z")

Тода, т.е. събития

Int64 и нейните производни

Xia, ако е избран повече от един компонент

Редактиране на функции като текст

Като пример, помислете за дефиницията на класа в модула TIntegerProperty

функция GetValue: низ; отменят;

процедура SetValue (Конст Стойност: низ); отменят;

Както можете да видите, методи GetValue () и SetValue (), променен. По-долу показва прилагането на метода GetValue ():

функция TIntegerProperty.GetValue: низ;

метод Но изпълнение SetValue ():

процедура TIntegerProperty.SetValue (конст стойност: String);

с GetTypeData (GetPropType) ^ правя

ако (L MAXVALUE) след това

Таблица 12.2. Методи за четене и писане TPropertyEditor имоти клас

Това е твърде лесно, защо да усложни задачата. Да предположим, че искате да се даде възможност на потребителя да избере един от следните два начина за задаване на планетата. Той може да набирате име планета низ, като Венера или Венера. или Венера. или можете да въведете позицията на планетата в Слънчевата система. Така че, за Венера, тази позиция ще бъде равна на znĂ cheniyu 2.

По-долу е компонентите TPlanet изходния код:

TPlanetName = тип цяло число;

имот PlanetName: TPlanetName прочетете FPlanetName

Както можете да видите, този компонент е много малък. Той има само един тип имот PlanetName TPlanetName. Специално за определяне типа TPlanetName ни позволява да има своя собствена информация за видовете по време на работа и все още да е цяло число тип.

интерфейс usesWindows, SysUtils, DesignEditors;

функция GetValue: низ; отменят;

процедура SetValue (Конст Стойност: низ); отменят;

PlanetNames: масив [1..9] на String [7] = ( "Mercury", "Венера,

"Земя", "Марс", "Юпитер", "Сатурн",

"Уран", "Нептун", "Плутон");

функция TPlanetNameProperty.GetValue: низ;

процедура TPlanetNameProperty.SetValue (конст стойност: String);

I, ValErr: цяло число;

PlanetNames. Ако не се намери един мач, променливата I

отнема стойност по-малко от 10>

докато (PName <> Главни (PlanetNames [Ь])) и (I <10) do

Задаване на стойност и да излезете от процедурата.>

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

несъществуваща име на планетата. Използвайте функцията Val до

проверка на данните, въведени от редица. Ако не е равно ValErr

нула, въвели правилно името на планетата. в противен случай

е така, проверете въведения номер на членството

спектър (0

Val (стойност, I, ValErr);

ако ValErr <> 0 след това

Format ( "Съжалявам, Никога не съм чувал планета% S". [Стойност]));

ако: (а <= 0) or (i>= 10), след това

повишаване Exception.Create ( "Съжаляваме, че планетата не е в нашата слънчева система. '); SetOrdValue (I);

Ние определяме масив от низове константи за представяне на планетите от Слънчевата реанимация предмети, в зависимост от позицията им спрямо слънцето. Тези линии ще otve чат на низ от планетите в прозореца на обекта инспектор.

Както вече бе споменато, трябва да замени GetValue () и задание Стойност (). GetValue () метод връща низ от PlanetNames масива. Този масив се индексира от стойностите на свойствата. Разбира се, стойността на имота, за да се hoditsya в диапазона 1-9. Следователно, потребителят няма право да влиза в номера на ME Тод SetValue () извън този обхват.

SetValue () метод получава низ влезе в прозореца на инспектор на обекта. това

низ може да бъде или на името на планетата, както и редица определяне на позицията

планета. код логика определя името на планетата, или дали номерът е въведена правилно, и ако е така, съответната стойност възлага на собственост от Se- tOrdValue (). Ако потребителят е влязъл грешно име на планетата или nedopus обратимо броя, съответният изключение се предава.

процедура RegisterPropertyEditor (PropertyType: PTypeInfo; ComponentClass: Чклас; Конст PROPERTYNAME: низ;

RegisterPropertyEditor (TypeInfo (TPlanetName), TPlanet "PlanetName ', TPlanetNameProperty); Съвета

Ponent в компонент модула, както е показано в Пример 12.5. Обявата 12.5. Planet.pas - компонент TPlanet единица планетата;

TPlanetName = тип цяло число;

имот PlanetName: TPlanetName прочетете FPlanetName

Свързани статии

Подкрепете проекта - споделете линка, благодаря!