Главная » Delphi » Категории свойств

0

Как уже отмечалось в главе 1, “Программирование в Delphi”, новинкой Delphi  5 яв лялись  категории свойств (property categories). Теперь свойства компонентов библио теки  VCL можно  отнести к той  или иной  категории, а инспектор объектов получает возможность рассортировать свойства по категориям. Принадлежность свойства к определенной категории можно  зарегистрировать с помощью  функций  Register- PropertyInCategory() и RegisterPropertiesInCategory(), объявленных в моду ле DesignIntf. Первая из названных функций позволяет отнести к заданной катего рии одно свойство, а вторая — сразу несколько.

Функция  RegisterPropertyInCategory() является перегружаемой, в результа те чего  можно  использовать четыре ее версии, предназначенные для различных по требностей. Всем  версиям этой  функции передается в качестве первого параметра класс TPropertyCategoryClass, описывающий необходимую категорию. Что  каса ется остальной части списка передаваемых параметров, то каждой из версии переда ется различная комбинация (состоящая из имени свойства, типа свойства и класса компонента). Это позволяет программисту выбрать наилучший метод  регистрации созданных им свойств. Приводим объявления различных версий функции Register- PropertyInCategory():

function RegisterPropertyInCategory( ACategoryClass: TPropertyCategoryClass;

const APropertyName: string): TPropertyFilter; overload;

function RegisterPropertyInCategory(

ACategoryClass: TPropertyCategoryClass;

AComponentClass: TClass;

const APropertyName: string): TPropertyFilter overload;

function RegisterPropertyInCategory(

ACategoryClass: TPropertyCategoryClass;

APropertyType: PTypeInfo;

const APropertyName: string): TPropertyFilter; overload;

function RegisterPropertyInCategory(

ACategoryClass: TPropertyCategoryClass;

APropertyType: PTypeInfo): TPropertyFilter; overload;

Эти  функции  достаточно интеллектуальны, чтобы  надлежащим образом воспри нимать  символы шаблона, благодаря чему можно  отнести к определенной категории все свойства, имена  которых соответствуют, к примеру, маске  ‘Data*’. Для получе ния  полного списка  поддерживаемых Delphi символов шаблона  и информации об их поведении обратитесь к интерактивной справочной системе Delphi  (раздел, описы вающий класс TMask).

Предусмотрено три  варианта перегружаемой функции RegisterPropertiesIn-

Category():

function RegisterPropertiesInCategory( ACategoryClass: TPropertyCategoryClass;

const AFilters: array of const): TPropertyCategory; overload;

function RegisterPropertiesInCategory(

ACategoryClass: TPropertyCategoryClass;

AComponentClass: TClass;

const AFilters: array of string): TPropertyCategory; overload;

function RegisterPropertiesInCategory(

ACategoryClass: TPropertyCategoryClass;

APropertyType: PTypeInfo;

const AFilters: array of string):TPropertyCategory; overload;

Классы категорий

Тип  TPropertyCategoryClass представляет собой  ссылку  на  класс  категории свойства TPropertyCategory. Для всех  стандартных категорий свойств  в библио теке  VCL базовым  классом  является класс TPropertyCategory. Существует  12 стандартных категорий свойств, и все они описаны в табл. 12.4.

Таблица 12.4. Классы стандартных категорий свойствИмя класса     Описание

TActionCategory        Свойства, связанные с действиями времени выпол нения. К этой  категории относятся свойства En- abled и Hint компонента TControl

TDatabaseCategory      Свойства, относящиеся  к  операциям с  базами   дан ных.  К этой  категории относятся свойства Databa- seName и SQL компонента TQuery

TDragNDropCategory     Свойства, связанные с операциями перетаскивания и закрепления (стыковки окон). К данной категории относятся  свойства DragCursor и  DragKind ком понента TControl

THelpCategory          Свойства, связанные с использованием интерактив ной  справки и  подсказок.  К  этой   категории  отно сятся   свойства  HelpContext и  Hint компонента TWinControl

TLayoutCategory        Свойства,  связанные  с  визуальным  отображением элемента управления во время  разработки. К данной категории относятся свойства Top и Left компонен та TControl

TLegacyCategory            Свойства, связанные с уже устаревшими операциями.

К этой  категории относятся свойства Ctl3D и Par- entCtl3D компонента TWinControl

TLinkageCategory       Свойства,  имеющие  отношение  к  присоединению или связыванию одного  компонента с другим. К этой категории относится свойство DataSet компонента TDataSource

TLocaleCategory        Свойства, связанные с локализацией. К этой  катего рии  относятся  свойства BiDiMode и  ParentBiDi- Mode компонента TControl

TLocalizableCategory   Свойства, относящиеся  к  операциям с  базами   дан ных.  К этой  категории относятся свойства Databa- seName и SQL компонента TQuery

TMiscellaneousCategory Свойства, которые либо  не подходят ни под одну из существующих  категорий, либо не нуждаются  в причислении к какой либо  категории, либо  не  заре гистрированы в явном  виде  в определенной катего рии. К этой категории принадлежат свойства Allow- AllUp и Name компонента TSpeedButton

TVisualCategory   Свойства,  связанные  с  визуальным  отображением элемента управления во  время   выполнения. К  дан ной  категории относятся свойства Align и Visible компонента TControlОкончание табл. 12.4.

Имя класса                                                 Описание

TInputCategory         Свойства, связанные  с  вводом  данных   (они   необя зательно имеют  отношение к операциям с базами данных). К этой  категории относятся свойства En- abled и ReadOnly компонента TEdit

Допустим, что создан компонент по имени TNeato, у которого есть свойство Keen, и требуется зарегистрировать это свойство в качестве члена категории Action, представ ленной классом  TActionCategory. Это  можно  сделать,  добавив  в процедуру  Regis- ter() обращение к функции RegisterPropertyInCategory(), как показано ниже.

RegisterPropertyInCategory(TActionCategory, TNeato, ‘Keen’);

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии