Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Pascal и Delphi / Учебник по Delphi 5 / Создание элементов управления ActiveX /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Библиотеки типов - Программирование от RIN.RU
Библиотеки типов



Элементы Interface и Displnterface в библиотеках типов


Интерфейс в библиотеке типов - это коллекция определении свойств и методов. Клиент может получить доступ к интерфейсам либо посредством таблицы виртуальных методов, либо с помощью специального интерфейса OLE I Dispatch, который позволяет использовать свойства и методы объектов через уникальный идентификатор или DispID. Элемент Displnterface определяет интерфейс, доступ к которому можно получить только через интерфейс IDispatch. Двойной интерфейс (dual interface) - это интерфейс, доступ к которому можно получить и через таблицу виртуальных методов, и через интерфейс IDispatch. В следующих двух разделах рассматривается назначение вкладок Attributes и Members в описании интерфейсов.


Вкладка Attributes в описании интерфейса


В таблице 3.4 перечислены все возможные атрибуты, которые можно использовать в описании интерфейса, а в таблице 3.5 - все флаги, используемые в описании интерфейса.


Таблица 3.4. Атрибуты интерфейсов в библиотеках типов
АтрибутОписание
NameИмя перечисления
GUID128-разрядный идентификатор GUID-перечисления
HelpString Краткое описание перечисления. Настоятельно рекомендуется указывать эту строку во всех создаваемых библиотеках
Help ContextИдентификатор контекста справки по перечислению
VersionВерсия библиотеки типов, записанная в формате п.т, где п - старший и т - младший номера версии. В качестве номера версии может использоваться и единичное целое число. В качестве старшего и младшего номеров версий можно использовать числа от 0 до 65 535
Parent InterfaceИмя интерфейса, являющегося базовым классом для выбранного интерфейса. Этот атрибут не применяется для интерфейсов Displnterface



Таблица 3.5. Флаги интерфейсов в библиотеках типов
ФлагОписание
DisplnterfaceЭлемент описывает методы и свойства объекта, доступ к которому можно получить только через метод Invoke интерфейса Idispatch
HiddenУказывает, что интерфейс существует, но не должен быть показан в пользовательских броузерах 
NonextensibleУказывает, что реализация интерфейса IDispatch включает только те свойства и методы, которые показаны в описании интерфейса
DualУказывает, что интерфейс предоставляет методы и свойства через интерфейс IDispatch и таблицу виртуальных методов
OLE AutomationУказывает, что интерфейс может использовать только совместимые с автоматизацией типы данных. С элементом Displnterface этот флаг использовать нельзя, так как данный элемент совместим с автоматизацией по определению



Вкладка Members в описании интерфейса


Вкладка Members в описании интерфейса содержит свойства интерфейса и методы, определенные в этом интерфейсе. За исключением незначительных отличий, синтаксис объявлений констант и методов совпадает с синтаксисом языка Object Pascal. Первое отличие проявляется в том, что после описания каждого свойства и метода должен следовать уникальным идентификатор или DispID. Обычно значения DispID начинаются с 1 и увеличиваются на 1 для каждого следующего элемента. Вторым отличием являются ключевые слова readonly и writeonly, которые позволяют запрещать запись и чтение свойств соответственно. Ниже показан пример определения методов и свойств.


property FrameCount: Integer; readonly; dispid 1;
property Play(FromFrame, ToFrame: Smallint; Count: Integer); dispid 2;
property OpenDatabase[DatabaseName, TableName, UserName, Password : WideString]: WordBool; dispid 3;




Последним является определение параметризованного свойства с разрешением только чтения. В примере это свойство использовано не только для демонстрации такого типа свойств, но и потому, что некоторые серверы ActiveX предпочитают использовать параметризованные свойства вместо методов.


Если для описания интерфейса используется инструкция Displnterface, то для определения методов и свойств интерфейса можно использовать только совместимые с автоматизацией OLE типы данных. Совместимыми с OLE являются следующие типы данных: Byte, Smallint, Integer, Single, Double, Currency, TDateTime, WideString, WordBool и OleVariant. Для передачи многомерных структур данных можно использовать массивы данных типа OleVariant.


Вкладка Attributes в описании свойств и методов интерфейса


В таблице 3.6 перечислены все атрибуты, которые используются в определении членов интерфейса, а в таблице 3.7 - все возможные флаги.


Таблица 3.6. Атрибуты членов интерфейса в библиотеках типов:
Атрибут Описание 
DeclarationОбъявление свойства или метода 
ID Значение идентификатора DispID 
Help String Краткое описание свойства или метода 
Help ContextИдентификатор контекста справки по свойству или методу



Таблица 3.7. Флаги членов интерфейса в библиотеках типов
ФлагОписание
Restricted Запрещает использовать библиотеку типов в средах программирования макросов, таких как Visual Basic
Source Указывает, что член возвращает объект или значение типа VARIANT, являющееся источником событии
BindableУказывает, что свойство поддерживает связывание (binding) данных
Request Edit Указывает, что свойство поддерживает сообщение OnRequestEdit
Display BindableУказывает, что свойство должно быть показано пользователю как поддерживающее связывание данных (bindable)
 Default BindableУказывает на одно поддерживающее связывание данных свойство, которое наилучшим образом представляет объект 
HiddenУказывает, что интерфейс существует, но не должен быть показан в пользовательских
броузерах 



Составные классы (CoClass) в библиотеках типов


Составной класс в библиотеке типов (CoClass) представляет весь элемент управления ActiveX, объект автоматизации или специальный объект СОМ. Составной класс включает интерфейсы и диспинтерфейсы, которые предоставляются клиентскому приложению. В следующих двух разделах рассматривается назначение вкладок Attributes и Members редактора библиотек типов в описаниях классов составных объектов.


Вкладка Attributes в описании классов составных объектов


В таблице 3.8 перечислены все атрибуты, а в таблице 3.9 - флаги, которые используются в описаниях составных классов.


Таблица 3.8. Атрибуты составных классов в библиотеках типов
АтрибутОписание 
NameИмя составного класса (CoClass) 
GUIDУникальный 128-разрядный идентификатор GUID составного класса (CoClass) 
Help StringКраткое описание составного класса. Настоятельно рекомендуется указывать эту строку во всех создаваемых библиотеках
Help ContextИдентификатор контекста справки по составному классу
VersionВерсия библиотеки типов, записанная в формате п. т, где n - старший и m - младший номера версии. В качестве номера версии может использоваться и единичное целое число. В качестве старшего и младшего номеров версий можно использовать числа от 0 до 65 535.



Таблица 3.9. Флаги составных классов в библиотеках типов
Флаг Описание
LicensedУказывает, что во время разработки и выполнения требуется лицензия. Обычно используется вместе с элементами управления ActiveX
ControlУказывает, что составной класс является элементом управления
Application ObjectУказывает, что составной класс помещен во внешний (out-of-process) сервер (ЕХЕ). Используется исключительно с серверами автоматизации



Вкладка Members в описании составного класса


Во вкладке Members в описании составного класса можно добавлять и удалять интерфейсы и перечисления, которьк составляют класс СОМ. В рассматриваемой вкладке содержится следующая информация.


  • Имена интерфейсов и диспинтерфейсов, которые реализованы в классе СОМ.

  • Идентификаторы GUID интерфейсов и диспинтерфейсов, реализованных в классе СОМ.

  • Указания, является ли интерфейс или диспинтерфейс источником сообщений.

  • Указания, является ли интерфейс или диспинтерфейс программируемым интерфейсом, используемым в языке программирования макросов, таких как Word

  • Basic, Visual Basic, Delphi, Object PAL и Excel Basic.

  • Указания, запрещено ли использование интерфейса или диспинтерфейса в языках программирования макросов таких как Word Basic, Visual Basic, Delphi, Object PAL и Excel Basic.




Чтобы добавить интерфейсы в составной класс или удалить их, нужно щелкнуть правой кнопкой мыши в облает вкладки Members. На экране появится контекстное меню, в котором нужно выбрать команду Insert Interface или Remove Interface. С помощью контекстного меню можно также установить флаги Source, Default и Restricted. Новые интерфейсы можно выбирать из текущей библиотеки или из библиотек, на которые ссылается текущая библиотека типов.

<<<  Назад
 1  2 


 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь