Урок 8. Окно списка (List box), комбинированное окно (Combo box),...
Окна списка и комбинированные окна удобно использовать когда необходимо предоставить возможность пользователю выбирать элемент из списка. Кроме того, с помощью комбинированного окна пользователь может добавить элемент в список, а панели инструментов Visual Basic окно списка и комбинированное окно изображены пиктограммами
Заполнение списков проводится при помощи метода Addltem или установкой свойства List.
Построим простое приложение для демонстрации использования списка и комбинированного списка. Положим, что у нас есть база данных PRODUCTS.MDB для учета товаров, единственная таблица которой PRODUCTS содержит поля, как показано в таблице.
Текстовое поле Depository определяет наличие товара на складе и может содержать только одну из двух строк “Да” или “Нет”.
Создайте новый проект и расположите на форме объект управления данными, пять меток, четыре текстовых окна, командную кнопку, список и комбинированный список как показано на рис. 8.1.
Рис. 8.1.
В окне свойств объекта Data1 определите свойство Caption, как “Товары”, установите свойство DatabaseName как имя файла базы данных с указанием полного пути, например, C: \WORK\PRODUCTS.MDB и укажите в качестве источника данных имя таблицы PRODUCTS определением свойства RecordSource. Затем установите свойства меток, текстовых окон и командной кнопки, списка и комбинированного списка следующим образом:
Label1.Caption=Код товара
Label2.Caption=Наименование
Label3.Caption=Цена
Label4.Caption=Присутствие на складе
Label5.Caption=Примечание
Соmmand1.Caption=Добавить
Text1.DataSource=Data1
Text1.DataField=Id
Text2.DataSource=Data1
Text2.DataField=Product
Text3.DataSource=Data1
Text3.DataField=Price
Text4.DataSource=Data1
Text4.DataField=Note
List1.DataSource=Data1
List1.DataField=Depository
Combo1.DataSource=Data1
Combo1.DataField=Depository
В процедуру обработки события нажатия кнопки добавьте код, который добавит пустую запись в набор записей и сделает ее текущей:
Private Sub Command1_Click
Data1.Recordset.AddNew
End Sub
И наконец, в окне свойств списка и комбинированного списка определите свойство List добавив строки “Да” и “Нет”.
Запустите проект и добавьте записи в базу данных. Ввести значение в поле Depository можно выбрав “Да” или “Нет” в простом или комбинированном списке. При перемещении указателя текущей записи по набору записей в комбинированном списке будет отображаться “Да” или “Нет” в зависимости от содержимого поля Depository, в то время как в обычном списке значение поля будет выделяться подсветкой (рис. 8.2).
Рис. 8.2.
Применение объекта OLE container дает возможность не только размещать на экранной форме приложения различные OLE-объекты, хранящиеся в базе данных, но и редактировать их. В качестве OLE-объектов могу выступать например: рисунки, документы Microsoft Word, таблицы Microsoft Excel, звуковые фрагменты и видеоклипы и многое другое. Посмотреть, какие OLE-объекты вы имеете возможность разместить в своей базе данных можно, например, выполнив команду меню Вставка->Объект текстового процессора Microsoft Word. В появившемся окне будет находиться список всех объектов OLE, зарегистрированных в вашей системе (рис. 8.3).
Рис. 8.3.
В своем приложении вы можете использовать либо внедренные (embedded) либо связанные (linked) объекты. Внедренные OLE-объекты содержат информацию как о самом объекте, так и о приложении его создавшем — OLE-сервере. Редактирование внедренного объекта можно проводить только с помощью приложения-клиента. В нашем случае это разрабатываемая СУБД. В отличие от внедренных, связанные OLE-объекты в базе данных сохраняют связь с объектом — оригиналом и любое изменение оригинала приведет к аналогичному изменению объекта, хранящегося в БД.
В базе данных формата MS Access внедренные объекты или ссылки на связанные объекты всегда хранятся в поле типа OLE Object. Понятно, что если вы создадите базу данных с документами Microsoft Word, то просматривать эту БД можно будет только на компьютере, на котором так же установлен этот текстовый процессор.