Использование динамической библиотеки ActiveX
В этом упражнении Вы создадите динамическую библиотеку на Visual Basic, а затем воспользуетесь ею для создания объекта в Microsoft Access.
> Создание DLL на Visual Basic
Private UserName As String
Private strMessage As String
Public Sub SayHello()
MsgBox "Привет " & UserName & "!"
End Sub
Public Property Let Name(Name As String)
UserName = Name
End Property
Public Property Get Message()
strMessage = "Привет из DLL".
Message = strMessage
End Property
Примечание. Обычно перед вызовом библиотеку нужно зарегистрировать. Оставив же ее выполняться (в среде Visual Basic), Вы сможете протестировать ее без регистрации, поскольку она уже загружена.
> Использование DLL из другого приложения
- Запустите Microsoft Access, установите в первом окне переключатель Blank Database и щелкните ОК.
- Сохраните новую базу данных под именем Lab8.mdb в папке WA\Practice\Ch08.
- Когда откроется диалоговое окно базы данных, щелкните вкладку Forms и нажмите кнопку New.
- Выберите режим Design View и нажмите ОК.
- Добавьте кнопку в форму Form1.
- Когда появится мастер Command Button Wizard, нажмите Cancel.
- Добавьте метку в форму Forml.
- В качестве названия метки укажите слово nothing.
- Правой кнопкой мыши щелкните кнопку Command0 и выберите из появив шегося меню пункт Properties.
- Щелкните вкладку Events и выберите событие On Click.
- Щелкните многоточие справа от события On Click.
- Выберите Code Builder и нажмите ОК.
- В меню Tools выберите пункт References.
- Прокрутите список ссылок Available References, пометьте флажком пункт SampleDLL и нажмите ОК.
В результате в код обработки события будет добавлена ссылка на библиотеку, которую Вы оставили работать в Visual Basic.
- . В событие CommandO_Click добавьте следующий код:
Dim MyObject As New Classi
MyObject.Name = InputBox("KaK Ваше имя?")
Label"!.Caption = MyObject.Message
MyObject.SayHello
- В меню Run выберите пункт Go/Continue.
- Нажмите кнопку CommandO.
- Введите свое имя и нажмите ОК.
- Переключитесь на Ваше приложение, работающее в Visual Basic. Появится окно сообщения, в котором указано Ваше имя.
- Нажмите ОК.
- Снова переключитесь в Microsoft Access.
Обратите внимание, что текст метки изменился.
- Закройте форму Form1 и нажмите Yes, чтобы сохранить изменения. Сохраните форму под именем frmLab8.
- Закройте Microsoft Access.
- Переключитесь в Visual Basic.
- Остановите работу приложения и выйдите из Visual Basic. Если хотите, може те сохранить проект в папке WA\Practice\Ch08.
Исполняемые компоненты ActiveX
Исполняемые компоненты ActiveX работают в своем адресном пространстве, а их клиентами обычно являются приложения, работающие в рамках другого процесса. Так как внепроцессные компоненты реализуются в своем процессе, клиент может сделать запрос серверу и продолжить свою работу, пока компонент-сервер будет выполнять запрос. При правильной настройке подобной системы компонент посылает асинхронное сообщение клиенту, чтобы уведомить того о выполнении порученной ему работы.
Однократно и многократно используемые компоненты
Однократно используемые компоненты позволяют другим приложениям создавать объекты, причем каждый из них при этом является новым экземпляром компонента. В роли однократно используемых компонентов могут выступать только исполняемые файлы ActiveX, тогда как динамические библиотеки ActiveX всегда служат многократно используемыми компонентами.
Многократно используемые компоненты позволяют другим приложениям создавать объекты на основе своих классов, причем этим способом можно создать любое количество объектов. Внепроцессный компонент вправе предоставить несколько объектов разным клиентам, а внутрипроцессный компонент — несколько объектов клиенту и любым другим компонентам, работающим в рамках того же процесса. Как исполняемые компоненты, так и динамические библиотеки ActiveX при необходимости служат многократно используемыми компонентами.