File: ...\Samples\Solution\Winapi\Typelib.scx

Пример TYPELIB использует класс Visual FoxPro с именем Typelib, который хранится в библиотеке  ...\Samples\Classes\Typelib.vcx. Этот класс, на основе контейнера содержит компонент ActiveX,  который имеет ряд методов для чтения Type Library информации из любого .dll, .exe или .tlb file.

Класс-обертка Typelib сохранит ваше время, обрабатывая большую часть вашей работы. В классе имеется метод ExportTypeLib, который экспортирует содержание указанной библиотеки типов в текстовый File.

  CopyCode imageСкопировать код
THISFORM.typelib1.TypeLibName = THISFORM.txtFileName.Value
THISFORM.typelib1.ExportTypeLib( )

Если вы взглянете на сгенерированный текстовый файл, вы отметите, что библиотека типов (Type Library) может состоят из множества Type Infos. Каждый Type Info представляет конкретный класс. Когда вы генерируете новый EXE или DLL из проект с помощью Visual FoxPro, каждый класс в проекте, который отмечен как OLEPUBLIC будет генерировать отдельный пользовательский Custom OLE Server.

NoteЗамечание

Вы можете иметь единичный .exe/.dll файл, однако, такой файл может содержать множество серверов (по одному на каждый OLEPUBLIC класс).И Visual FoxPro генерирует единичный TLB файл для всего проекта, хотя такой Type Library файл содержит отдельные Type Info для каждого OLEPUBLIC класса.

Внутри каждого Type Info (OLEPUBLIC класс), кроме того, имеется описания функции. Они представляют все свойства и методы класса. Для методов, the Type Library содержит как параметры, так и возвращаемые типы. Некоторыми из возможных типов являются Boolean, string и variant. Поскольку в Visual FoxPro нет строгой типизации переменных, многие из этих типов используемые в ваших пользовательских методах будут типа variant.

Если вы посмотрите более пристально на экспортированные функции, вы отметите двойные входы для многих свойств. Это происходит потому, что пользователи могут либо устанавливать set или получать get значения этих свойств. А некоторые языки, такие как Visual Basic предоставляют вам возможность исполнять код при присвоении или доступе к этим свойствам. Отсюда и следует, что Type Library будет представлять одно свойства двумя входами. Если существует только один вход, то это означает, что свойсто является свойством определенным только для чтения. Свойства и методы, которые помеченны как Hidden или Protected не появятся в Type Library.

Смотрите также