
- •Часть 2
- •Тема 4. Com-технологии
- •Создание com-компонентов
- •2.1. Создание ActiveX – элементов
- •Разработка ActiveX - элемента
- •Создание страниц свойств ActiveX – элемента
- •2.2. Создание ActiveX – компонентов кода
- •2.3. Создание dhtml – приложений
- •2.4. Разработка ActiveX-документа
- •Преобразование стандартного проекта в активный документ
Создание страниц свойств ActiveX – элемента
При проектировании ActiveX-элемента можно создавать для него свойства, методы и события. Для этого можно выбрать один их двух способов:
Программировать свойства, методы и события самостоятельно.
Использовать надстройки ActiveX Control Interface Wizard и Property Page wizard для создания кодов страниц свойств ActiveX-элемента.
Страницы свойств предоставляют пользователю собственный интерфейс для настройки свойств ActiveX-элемента более гибкий, чем окно свойств. Страницы свойств выглядят похожими на формы стандартного проекта с вкладками (или без них), но функционируют по-другому.
Мастер ActiveX Control Interface Wizard проектирует для элемента управления свойства и события.
Мастер Property Page wizard позволяет:
Создавать пользовательский интерфейс для страниц свойств
Добавлять код, синхронизирующий страницу свойств с текущим состоянием элемента управления
Сопоставлять свойства со страницей свойств и связывать диалоговое окно страницы свойств с элементом управления.
Оба мастера вызываются из меню Надстройки (Add Ins) с помощью диалога Add-In Manager, в списке надстроек которого следует выбрать мастеров VB6 ActiveX Ctrl Interface Wizard и VB6 Property Page wizard и установить флажок Loaded/Unloaded в разделе Load Behavior для обоих мастеров. После этого нужный мастер может быть вызван из меню Надстройки.
Рассмотрим процесс создания страниц свойств с помощью мастеров на примере.
Задача. Разработать ActiveX-элемент, предоставляющий комбинированный список с именами файлов указанного пользователем каталога.
В шаблоне ActiveXControl на UserControl поместить ComboBoxControl, свойству Name которого присвоить cmbFiles (рис.22).
Рис.22
Следующим свойствам UserControl присвоить значения свойству Name <FileCombo>, свойству BackStyle = 0; для свойства ToolBoxBitMap указать путь к любой пиктограмме.
В меню Add-Ins с помощью диалога Add-In Manager загрузить оба мастера VB6 ActiveX Ctrl Interface Wizard и VB6 Property Page wizard.
Запустить ActiveXControl InterFace Wizard.
На шаге “ Select InterFace members “ очистить правое окно и добавить в него: BackColor, Click, Enabled, Font, ForeColor.
В окне <my Custom members> cоздать пользовательские свойства <InitDir> и <FileName>.
Далее все свойства, кроме новых, связать с элементом cmbFiles.
Установить атрибуты свойств FileName и InitDir как строчные без значения по умолчанию.
Для свойства FileName: RunTime установить в режим ReadOnly, DesignTime – в режиме Read/Write.
Для свойства InitDir: RunTime и DesignTime установить в режим Read/Write.
Завершить работу мастера [Finish].
Запустить мастер Property Page Wizard.
На втором шаге к существующим вкладкам Standart Font и Standart Color добавить новую <General> и переставить ее на первое место в списке вкладок (страниц).
На страницу General разместить свойства Enabled, FileName и InitDir.
Завершить работу мастера [Finish].
В модуль класса для UserControl- FileCombo дабавить код:
Private Sub GetDir()
Dim sFile As String
cmbFiles.Clear
sFile = Dir(m_InitDir)
Do Until sFile = ""
cmbFiles.AddItem sFile
sFile = Dir
Loop
End Sub
Private Sub UserControl_Initialize()
Call GetDir
End Sub
В процедуру Private Sub UserControl_ReadProperties добавить строку
Call GetDir.
В модуль класса для Property Page- General дабавить код:
Public Property Get InitDir() As String
InitDir = m_InitDir
Call GetDir
End Property
Public Property Get FileName() As String
m_FileName = cmbFiles.Text
FileName = m_FileName
End Property
Добавить в данный проект стандартный проект.
Закрыть UserControl
Разместить ActiveX-элемент на форме.
Для отладки правой кнопкой мыши щелкнуть по ActiveX-элементу, чтобы открылись созданные страницы
Изменить значения свойств и просмотреть результаты (рис.23).
Рис.23
Для отладки пользовательских свойств в InitDir указать путь к какой-нибудь папке. При запуске стандартного проекта с тестовой формой ComboBox будет содержать список файлов из указанной в InitDir папке.
Н
а форме стандартного проекта комбинированный список отобразит имена файлов указанного на станицах свойств каталога (рис.24).
Рис.24
Самостоятельные задания
Просмотреть коды страниц свойств и проследить работу методов объекта PropertyBag.
Разместить на одной форме стандартного проекта несколько элементов управления с комбинированным списком. Настроить разные свойства для разных элементов управления и протестировать проект.
Создание ActiveX – элемента, выполняющего функцию источника данных
Visual Basic позволяет создавать ActiveX-элементы, которые предоставляют данные другим элементам управления. Такие элементы называются источником данных. Например, можно создать ActiveX-элемент, который будет выводить на форму VB-проекта данные из базы данных Access.
Задача. Разработать ActiveX-элемент, предоставляющий данные из таблицы Customers базы данных NWind.mdb
В шаблоне ActiveXControl создать UserControl, у которого установить свойства DataSourseBehavior = vbDataMember, Name = ctlSource
Установить ссылку на библиотеку Microsoft ActiveX Data Objects 2.5.library
В разделе General кода UserControl описать 2 переменные:
Private SN As Connection и RS As Recordset
В процедуру UserControl_Initialize веста код:
Private Sub UserControl_Initialize()
Dim sql As String
Set SN = New Connection
Set RS = New Recordset
SN.ConnectionString = "provider=Microsoft.Jet.OLEDB.3.51;" _
& "data source=D:\ProgramFile\Microsoft Visual Studio\VB98\NWind.mdb"
SN.Open
sql = "select * from Customers"
RS.Open SQL, SN, adOpenStatic
End Sub
В процедуру UserControl_GetDataMember ввести код:
Private Sub UserControl_GetDataMember(DataMember As String, Data As Object)
Set Data = RS
End Sub
Разместить на UserControl две кнопки < Предыдущий > и < Следующий >, модуль которых содержит коды:
Private Sub Предыдущий_Click()
RS.MovePrevious
If RS.BOF Then RS.MoveLast
End Sub
Private Sub Следующий_Click()
RS.MoveNext
If RS.EOF Then RS.MoveFirst
End Sub
Для тестирования добавить стандартный проект, на форме которого разместить 2 метки со значением свойств (табл. 4).
Таблица 4
Lable1 |
DataSource |
ctlSource1 |
Lable1 |
DataField |
CustomerID |
Lable2 |
DataSource |
ctlSource1 |
Lable2 |
DataField |
CompanyName |
Закрыть UserControl.
Разместить ActiveX-элемент на форме.
В окне пректа установить стандартный проект как стартовый.
Просмотреть результат (рис.25):
Рис.25