Добавить в цитаты Настройки чтения

Страница 174 из 179

Когда вы создаете новый внедренный OLE-объект при помощи метода CreateEmbed, приложение-сервер, определяемое именем класса — class, должно быть корректно зарегистрировано в вашей системе. Посмотреть классы объектов можно выбрав в окне свойств OLE-контейнера свойство Class и нажав справа кнопку с тремя точками. Появится окно со списком всех зарегистрированных классов (рис. 8.9).

Рис. 8.9. Окно выбора класса

Свойство Class объекта OLE-контейнер определяет имя класса внедряемого объекта следующим образом:

application.objecttype.version

objecttype.version

где application определяет приложение, objecttype определяет тип объекта в библиотеке объектов приложения и version определяет номер версии. Например, электронная таблица MS Ecxel пятой версии поддерживает несколько объектов — рабочие листы (worksheets) и диаграммы (charts). Соответствующие имена классов — Excel.Sheet.5 и Excel.Chart.5.

Вернемся к нашему приложению. Несколько изменим код обработки события нажатия командной кнопки, для вставки математического выражения:

Private Sub Command1_Click()

Data1.Recordset.AddNew

OLE1.CreateEmbed "Equation.2"

End Sub

Теперь при нажатии кнопки “Добавить” в базу данных будут добавляться записи, содержащие математические уравнения, которые вы можете редактировать в окне OLE-контейнера на вашей экранной форме.

Связанное окно списка (Data-bound list box) и связанное комбинированное окно (Data-bound combo box)

Связанные с данными окно списка и комбинированное окно в отличие от своих обычных аналогов List и Combo box специально разработаны для использования в СУБД и их основное предназначение — упростить ввод или отображение на экранной форме информации из базы данных в виде списков.

По умолчанию пиктограммы этих элементов управления отсутствуют на панели инструментов Visual Basic. Чтобы их добавить, надо выполнить команду меню Project — > Components, выбрать из списка элементов управления (Controls) Microsoft data bound list controls и затем нажать кнопку OK (рис. 8.10). К аналогичному результату приведет щелчок правой кнопкой мыши на панели инструментов.

Последствием этих действий будет появление следующих пиктограмм: (связанный список)  и  (связанное комбинированное окно) на панели инструментов. Теперь вы можете добавлять эти объекты управления в проекты своих приложений просто отбуксировав их с панели инструментов на экранную форму.

Рис. 8.10. Список элементов управления Visual Basic

Объекты управления Data-bound list box и Data-bound combo box имеют пять свойств, установка которых определяет их поведение как связанных с данными элементов управления. Краткое описание этих свойств приведено в таблице.

Таблица. Свойства связанного списка и связанного комбинированного окна

Свойство ∙ Описание

RowSource ∙ Имя объекта управления данными, которое используется для заполнения списка.

ListField ∙ Имя поля в наборе записей, определенном свойством RowSource, которое используется для заполнения списка.

DataSource ∙ Имя объекта управления данными, с которым связывается список.

DataField ∙ Имя поля в наборе записей, определенном свойством DataSource. Это поле используется для определения, какой элемента списка выбран. После выбора элемента списка и перемещения указателя текущей записи на другую запись это поле будет обновлено.

BoundColumn ∙ Имя поля в наборе записей, определенном свойством RowSource, значение которого будет скопировано.

Поля определяемые свойствами DataField и BoundColumn, должны быть одного типа.

Приведем пример простого приложения, в котором показано на практике как использовать связанные списки и связанные комбинированные окна для связи с данными.

Будем использовать базу данных FRIENDS.MDB, которая была создана ранее при демонстрации некоторых возможностей приложения VisData в первой главе. Эта база данных состоит из двух таблиц: PERSON, в которой находится персональная информация о ваших знакомых, и WORKPLACE, содержащая сведения об их местах работы или учебы. Связь между таблицами осуществляется на основании содержимого совпадающих полей Id work.





В приложении реализуем функцию просмотра значений некоторых полей обоих таблиц в связанных текстовых окнах. Кроме того, предоставим пользователю возможность обновления данных о месте работы с помощью выбора подходящего элемента из связанного списка или связанного комбинированного окна. Понятно, что в этом случае выбор из списка возможных альтернатив может быть сделан только исходя из данных таблицы WORKPLACE.

Создайте новый проект и расположите на экранной форме два объекта управления данными, связанный список, связанное комбинированное окно, четыре метки и три текстовых окна, как показано на рис. 8.11.

Рис. 8.11. Расположение элементов управления на форме

В окне свойств первого объекта управления данными установите свойство DataBaseName как имя базы данных FRIENDS.MDB с указанием полного пути к файлу. Затем установите свойство RecordSource как PERSON. Использование кнопок со стрелками этого объекта управления даст возможность пользователю перемещаться от записи к записи в таблице PERSON. У второго объекта управления данными установите свойство DataBaseName аналогичным образом и определите источник записей как следующий SQL-запрос:

SELECT Idwork, Office FROM WORKPLACE ORDER BY Id_work.

В результате выполнения этого запроса будет создан набор записей, содержащий значения полей Id work и Office, и упорядоченный по полю Id work. В принципе, второй объект управления данными можно сделать невидимым, установив его свойство Visible в False, так как для работы нам потребуется только созданный им набор записей.

Определите свойства меток, текстовых окон, списка и комбинированного окна следующим образом:

Label1.Caption=Имя

Label2.Caption=Фамилия

Label3.Caption=Идентификатор места работы

Label4.Caption=Обновление места работы

Text1.DataSource=Data1

Text1.DataField=Name

Text2.DataSource=Data1

Text2.DataField=LastName

Text3.DataSource=Data1

Text3.DataField= Idwork

DBList1.RowSource=Data2

DBList1.ListField=Office

DBList1.DataSource=Data1

DBList1.DataField=Id_work

DBList1.BoundColumn=ID_work

DBCombo1.RowSource=Data2

DBCombo1.ListField=Office

DBCombo1.DataSource=Data1

DBCombo1.DataField= Idwork

DBCombo1.BoundColumn=ID_work

Сохраните и запустите проект (рис. 8.12). В связанных текстовых окнах на экранной форме будет отображаться содержимое полей Name, LastName и Id work из таблицы PERSON. Список и комбинированное окно заполнятся названиями мест работы из таблицы WORKPLACE, причем место работы человека, определенного содержимым текстовых окон, будет выделено в списке подсветкой. Перемещением по набору записей с помощью первого объекта управления данными установите указатель на запись, где вы хотите обновить место работы. Из списка или комбинированного окна выберите требуемое значение и нажмите какую-либо кнопку на первом объекте управления данными, чтобы переместить указатель текущей записи и произвести обновление данных. Теперь верните указатель на ту же запись и убедитесь что информация о месте работы изменена в соответствие со сделанным выбором.