Реферат: Работа с базами данных через интерфейс
Рис.4
Чтобы запрограммировать обработку двойного щелчка на элементе списка, следует найти событие DblClick в окне свойств списка (List) и вписать следующий код:
form1.text1.value=form1.list1.List(form1.list1.listindex)
Номер выбранного элемента в списке задается через свойство listIndex . Вообще, элементы списка доступны через свойство List ( i ), где i определяет номер элемента списка. Содержимое текстового поля доступно через свойство value компонента TextBox .
Добавление начальных значений в список по команде addItem реализуется в обработчике события Init для формы:
Do menu1.mpr with thisform
thisform.list1.addItem("barbate")
thisform.list1.additem("dreadfull")
thisform.list1.additem("rapid")
Первую строку сохраним для последующих целей. Строки
thisform.list1.addItem("barbate")
thisform.list1.additem("dreadfull")
thisform.list1.additem("rapid")
Добавляют в список новые элементы во время инициализации формы. Заметим, что их нельзя включать в обработчик события Load для формы, т.к. при загрузке формы список программно не виден .
Достаточный интерес представляет использование чужеродных компонентов – ACTIVEX . Для этого воспользуемся контейнером OLEBoundControl . Компонент OleBoundControl расположен на панели элементов управления рядом с кнопками, текстовыми полями, списками, рисунками и пр. Этот компонент предназначен для хранения в нем объекта OLE. Таким объектом может быть документ WORD, мультимедийный файл, рисунок PaintBrush и др. Компонент OleBoundControl обычно используют для отображения полей таблиц, содержащих OLE-объекты. Для того чтобы воспользоваться OleBoundControl создадим новую таблицу, в которой будет всего два поля: nickname (кличка) таракана и photo (рисунок, который мы подготовим в PaintBrush). Таблицу назовем runners (бегуны). Полю nickname при формировании таблицы в конструкторе присвоим тип Character, а полю photo – тип General. В FoxPro тип General как раз и используется для хранения OLE-объектов.
Нам нужно занести рисунки с изображениями тараканов в General-поля. Это делается следующим образом. Откроем таблицу runners командой (кнопкой) Browse. Затем дважды щелкаем по полю General в каждой записи. Откроется окно редактора. Выберем в главном меню FoxPro п. Edit, а в нем – п.Insert Object. В новом окне следует выбрать тип вставляемого объекта (если он создается впервые) и указать, является ли он новым (т.е. его требуется создать) или находится в файле. Здесь выбираем второй вариант, поэтому тип объекта указывать не надо. Следует выбрать файл со вставляемым объектом, используя кнопку Browse. Никаких других установок не производим. Отметим, что в этом окне можно установить опцию Связать . Если это сделать, то любое изменение объекта-оригинала автоматически приведет к изменению объекта, помещенного в таблицу. Итак, после этих объяснений и предварительных действий считаем, что в таблице runners поля photo содержат рисунки с изображениями тараканов.
Разместим на форме компонент OleBoundControl (перечеркнут на рис.5).
Рис.5
Теперь расширим наше приложение таким образом, чтобы при выборе из списка клички, выбранная кличка отыскивалась в таблице runners и на компоненте OleBoundControl появлялся соответствующий рисунок. Для этого нужно связать компонент OleBoundControl с полем photo таблицы runners. Выделите мышью объект OleBoundControl и в окне его свойств найдите свойство ControlSource. Вручную установите в качестве значения этого свойства строку runners.photo (Рис.6).
Рис.6
Теперь изменим обработчик события, возникающего при выборе элемента из списка двойным щелчком мыши, следующим образом:
form1.text1.value=form1.list1.List(form1.list1.listindex)
close tables
use runners
locate for nickname=form1.text1.value
if found()=.T.
Form1.OleBoundControl2.Refresh
Endif
В приведенном фрагменте часть строк
close tables
use runners