Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование ИС.Часть2(COM технологии)..doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
3.27 Mб
Скачать

2.2. Создание ActiveX – компонентов кода

Компоненты кода, исполняемые программы и DLL, разработанные на основе COM, являются библиотеками классов. В отличие от ActiveX-элементов, компоненты кода обычно не имеют пользовательского интерфейса. Компоненты кода предоставляют повторно используемый код в виде объектов. VB позволяет создавать компоненты кода двух типов:

  • внутренние – DLL-сервера. Выполняются внутри клиентского процесса в том же адресном пространстве, обеспечивают более быстрый доступ к свойствам и методам объектов. Шаблон, применяемый для создания внутренних компонентов кода, называется ActiveX DLL;

  • внешние – EXE-сервера. Объекты выполняются в собственном адресном пространстве. В то время как само клиентское приложение выполняет какую-либо задачу, оно может передать решение другой задачи внешнему компоненту, Внешний компонент сам известит об окончании процесса решения. Внешние компоненты кода проектируются на основе шаблона ActiveX EXE.

В данном случае клиентом является приложение, использующее COM объекты. Клиент создает экземпляры классов, предоставляемые EXE- или DLL-файлами (серверами) COM компонентов, и обращается к свойствам. Методам и событиям COM объектов.

Свойства классов реализуются процедурами:

  1. Property Get – возвращает текущее значение свойства

  2. Property Let – устанавливает новое значение свойства

  3. Property Set – заменяет Property Let, когда свойство само является объектом (например, свойства Font элемента TextBox само является объектом).

Упражнение. Создание DLL-сервера ActiveX

Задача. Создать DLL-сервер ActiveX. Свойства и методы которого могут вызываться клиентским приложением. Тестирование сервера в стандартном проекте.

  • Создать новый проект на основе шаблона ActiveX DLL и дать ему имя MyDLL

  • В раздел модуля General Declarations класса Class1 ввести код:

Private UserName As String

Private strMessage As String

Public Sub SayHello()

MsgBox "Hello, " & UserName & "!"

End Sub

Public Property Let Name(Name As String)

UserName = Name

End Property

Public Property Get Message()

strMessage = "Hello from DLL!"

Message = strMessage

End Property

Прежде чем обращаться к DLL, ее, как правило, нужно сначала зарегистрировать. Но протестировать DLL в среде VB можно сразу, так как она автоматически загружается в память.

  • Создать тестовый проект, добавив из меню File стандартный проект.

  • Для стандартного проекта открыть диалог Project References

  • Установить флажок против MyDLL и щелкнуть OK

  • На форму стандартного проекта добавить кнопку с кодом на обработчик события Click():

Private Sub Command1_Click()

Dim Obj As MyDll.Class1

Dim strMessage As String

Set Obj = New Class1

Obj.Name = "Student"

Obj.SayHello

strMessage = Obj.Message

MsgBox strMessage, , "Message from DLL"

End Sub

  • Сделать стандартный проект стартовым

  • Сохранить проект как группу и выполнить его.

В результате появится два окна сообщения. Одно из них выводится методом ShowMessage DLL–сервера ActiveX (рис.26), а во втором окне отображается значение свойства Message объекта, объявленного в процедуре Command1_Click (рис.27).

Рис.26 Рис.27

  • Для компиляции выполнить команду FileMake MyDLL.dll

Создание внешнего компонента ActiveX EXE выполняется аналогично. Отличаются процедуры отладки компонент. Поскольку ActiveX-компоненты кода используются в клиентских приложениях и автономно не выполняются, то отлаживать их можно одним из двух способов:

  • Для отладки внутренних компонентов загрузить в среду VB тестовый проект Standard EXE или ActiveX EXE вместе с проектом компонента как группу. После этого возможно пошагово выполнять нужные процедуры, перейдя из кода тестового проекта в код внутреннего компонента.

  • Для отладки внешнего компонента требуется загрузить два экземпляра среды VB: один – с тестовым проектом, другой – с проектом компонента.