Инспектор на обекти и метаданни, DelphiSite

Най-четени

Инспектор на обекти и метаданни

Както вече споменахме, класът TGsvObjectInspectorTypeListInfo предоставя допълнителна функционалност при работа със свойства – изброени типове. Класът заменя методите IntegerToString, StringToInteger и FillList и за да настрои списъка с изброявания, той въвежда нов виртуален метод ListEnumItems - този метод прилича на базовия клас ChildrenInfo, но не връща метаданни за типа, а свойствата на всеки елемент за изброяване - неговото име и свързаната стойност - тези параметри се дефинират от записа TGsvObjectInspectorListItem. Конкретен метаклас, който описва свойствата на изброяването, може да бъде извлечен от класа TGsvObjectInspectorTypeListInfo и ще бъде достатъчно да се замени само методът ListEnumItems. Методът FillList итерира през всички изброени стойности, извиквайки ListEnumItems с монотонно нарастващ индекс, докато ListEnumItems върне нула. Резултатите от итерацията се предават на визуалния компонент на инспектора чрез параметъра List. Методите StringToInteger и IntegerToString се използват за преобразуване на низовата форма на изброена стойност в цяла форма и за обратното преобразуване, чийто алгоритъм е много подобен - и двата итерират списъка с изброявания, но в първия случай критерият за търсене е име на низ, а във втория случай стойността, свързана с него. Очевидно такъв базов клас може да се използва за всякакви изброени типове, дори и тези, в които изброените стойности не образуват подредена монотонна последователност.

TGsvCustomObjectInspectorGr >клас (TCustomControl)

свойство LongTextHintTime: Cardinal ;

свойство LongEditHintTime: Cardinal ;

ИмотAutoSelect: Boolean ;

propertyH >булев;

свойство OnHelp: TGsvObjectInspectorInfoEvent;

свойство OnHint: TGsvObjectInspectorInfoEvent;

Първо отбелязваме най-простите свойства и методи: · autoselect - ако автоматичният избор е инсталиран в True, тогава при избора на свойствата, налични за редактиране, целият текст ще бъде освободен, · hideereadonly - ако инсталирате в True, инспекторът ще скрие всички свойства, достъпни само чрез четене, · CLEAR - инцидентът на този метод ще бъде изчистен от несъответствието, което означава липсата на отсъствие. Проверен обект, · Expandall - разкриване на всички вложени клонки на дървото на свойствата, · Collapseall - за ограничаване на всички вложени клонки. Цикълът на събитията на инспектора при проверка започва с извикване на метода NewObject. Това ще накара инспектора да премине през събитието OnEnumProperties. Сигнатурата на манипулатора за това събитие е:

TGsvObjectInspectorEnumPropertiesEvent = процедура ( Подател: TObject ;

Индекс: Цяло число; изходяща информация: PGsvObjectInspectorPropertyInfo) на обект;

На манипулатора се предава монотонно нарастваща стойност на индекса и при всяко извикване манипулаторът трябва да върне в изходящия аргумент указател към метаданните на следващото свойство или нула, ако са изброени всички свойства. Манипулаторът може да изглежда така:

процедура TForm1. OnEnumProperties (Подател: TObject; Индекс: Цяло число;

изходяща информация: PGsvObjectInspectorPropertyInfo );

Информация := ObjectManager. PropertyInfo(Индекс);