Интернет-журнал "Домашняя лаборатория", 2007 №4
Шрифт:
Внедренные объекты можно редактировать. Нажатие правой кнопки мыши на OLE-контейнере приведет к появлению всплывающего меню с двумя пунктами: “Изменить” и “Открыть”. Выбор первого пункта позволит вам редактировать содержимое OLE-контейнера прямо в вашей экранной форме, в то время как выбор второго — приведет к запуску приложения-сервера и загрузке в него содержимого OLE-контейнера (рис. 8.6). В данном случае это будет редактор формул, входящий в поставку текстового процессора MS Word. После внесения необходимых изменений закройте приложение-сервер и убедитесь, что результаты редактирования отображены в базе данных.
Рис. 8.6. Запуск
Таким образом мы создали приложение, которое позволяет не только просматривать, но и редактировать OLE-объекты, хранящиеся в базе данных. Это могут быть совсем разные объекты: математические уравнения, рисунки, текстовые документы, таблицы, диаграммы и др.
В нашем приложении осталась незадействована командная кнопка “Добавить”. Очевидно, что она должна быть предназначена для добавления новых записей в базу данных. Добавим в процедуру обработки события нажатия этой кнопки код, который позволит нам добавлять пустую запись в конец набора записей:
Private Sub Command1_Click
Data1.Recordset.AddNew
OLE1.InsertObjDlg
End Sub.
Метод InsertObjDlg OLE-контейнера отображает на экране диалоговое окно выбора типа объекта (рис. 8.7). Отметив кнопку-переключатель Create New (Создать новый), вы можете вставить новый объект в базу данных, выбрав требуемый тип из списка зарегистрированных в системе объектов OLE. Выбор кнопки-переключателя Create from File (Создать из файла) позволит вам вставить в базу данных уже существующий на вашем жестком диске OLE-объект (рис. 8.8). При этом вы можете установить связь между файлом-оригиналом и добавленным в базу данных объектом, отметив контрольный индикатор Link (Установить связь).
Рис. 8.7. Диалоговое окно вставки объекта
Рис. 8.8. Вставка объекта из файла
Теперь с помощью нашего приложения вы можете не только просматривать и редактировать OLE-объекты в базе данных, но и добавлять новые, предварительно выбрав его тип. Однако в базах данных хранятся, как правило, объекты одного типа. Для создания объекта требуемого типа можно использовать метод CreateEmbed объекта OLE-контейнер. Метод имеет следующий синтаксис:
object.CreateEmbed sourcedoc, class.
Объектное выражение object определяет имя объекта OLE-контейнера. Первый аргумент — sourcedoc является обязательным и определяет имя файла документа, используемого как шаблон для внедряемого объекта. Если вы не определяете этот файл, то необходимо задать этот аргумент в виде пустой строки Второй аргумент — class не обязателен и определяет класс внедряемого объекта. Этот аргумент игнорируется, если определен параметр sourcedoc.
Когда вы создаете новый внедренный 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 • Имя объекта управления данными, которое используется для заполнения списка.