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

Создание страниц свойств 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