Работа с базами данных через интерфейс (48460)

Посмотреть архив целиком

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

кафедра информационных технологий автоматизированных систем







РЕФЕРАТ

на тему:


«РАБОТА С БАЗАМИ ДАННЫХ ЧЕРЕЗ ВИЗУАЛЬНЫЙ ИНТЕРФЕЙС»














МИНСК, 2008


ПЛАН


1. Описание визуальных компонентов

2. Компонент Grid

3. Пример приложения с компонентами


Каждый визуальный компонент имеет набор свойств, которые можно устанавливать программно или во время проектирования приложения. Для ознакомления с некоторыми визуальными элементами напишем первое простое приложение “бегущий таракан”. Создадим форму, как показано на рис.1.


Рис.1


На форме размещена кнопка (компонент класса CommandButton), таймер (компонент класса Timer) и рисунок (компонент класса Image). Подготовим два рисунка, которые будут сменять один другого по событию от таймера. У таймера есть свойство Interval, первоначально равное 0. В этом случае таймер не активен. Но если значение Interval равно, скажем, 200, то каждые 200 милисекунд (1 милисекунда = одной тысячной секунды) наступает событие от таймера. По событию от таймера и следует изменить рисунок таракана и переместить его вправо на небольшое расстояние, создав имитацию движения. Сначала запрограммируем кнопку следующим образом


timer1.Interval=200

Form1.Tag="1"


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


if Form1.Tag="1" then

Form1.Image1.Picture="d:\msdev\german\croach2.bmp"

Form1.Tag="2"

Form1.Image1.Left=Form1.Image1.Left+10

else

Form1.Image1.Picture="d:\msdev\german\croach1.bmp"

Form1.Image1.Left=Form1.Image1.Left+10

Form1.Tag="1"

endif


Обработчик события проверяет, какая картинка загружена: if Form1.Tag="1" then

Если загружена первая картинка, то грузим вторую:


Form1.Image1.Picture="d:\msdev\german\croach2.bmp"

Изменяем номер загруженной картинки:

Form1.Tag="2"


После этого смещаем картинку влево на 10 пикселей на форме:


Form1.Image1.Left=Form1.Image1.Left+10


Действия в части else симметричны. Результирующее окно программы имеет такой вид (рис.2).

Теперь отобразим окно, в котором будем изменять время движения таракана. Разместим на форме компонент Label (ярлык). Дадим ему фон цвета – желтый. Окно редактирования примет вид, показанный на рис. 3. Зададим значение свойства Alignment компонента Label1, равным Center. Запомните, для того чтобы задать то или иное свойство компонента на форме, нужно выделить его щелчком мыши и в окне свойств прописать нужное значение для этого свойства. Если окно свойств отсутствует, то щелкните на компоненте правой кнопкой мыши для открытия контекстного меню и выберите п. Properties. При установке, например, цвета фона компонента Label1, следует в окне свойств найти BackColor, выделить щелчком мыши эту строку, а затем открыть палитру цветов, нажав кнопку с многоточием в окне свойств непосредственно под закладкой Other вверху окна.


Рис.2


Рис.3


Нам следует теперь несколько изменить обработчик события от таймера:


if Form1.Tag="1" then

Form1.Image1.Picture="d:\msdev\german\croach2.bmp"

Form1.Tag="2"

Form1.Image1.Left=Form1.Image1.Left+10

else

Form1.Image1.Picture="d:\msdev\german\croach1.bmp"

Form1.Image1.Left=Form1.Image1.Left+10

Form1.Tag="1"

Endif

Form1.Label1.Caption=TIME()


Здесь добавлена строка Form1.Label1.Caption=TIME() для отображения времени.

Теперь зададим размер и цвет шрифта на компоненте LABEL1: FontSize=16 (размер шрифта), ForeColor – цвет шрифта. Кроме того, от времени оставим только секунды:


if Form1.Tag="1" then

Form1.Image1.Picture="d:\msdev\german\croach2.bmp"

Form1.Tag="2"

Form1.Image1.Left=Form1.Image1.Left+10

else

Form1.Image1.Picture="d:\msdev\german\croach1.bmp"

Form1.Image1.Left=Form1.Image1.Left+10

Form1.Tag="1"

Endif

s= TIME()

k=AT(":",s)

s=SUBSTR(s,k+1,LEN(s))

k=AT(":",s)

s=SUBSTR(s,k+1,LEN(s))

s=ALLTRIM(s)

Form1.Label1.Caption=s


Попробуйте самостоятельно осмыслить текст, помещенный сразу после ключевого слова EndIf.

Теперь сделаем следующее. Разместим на форме список с названиями тараканов. При двойном щелчке мышью на названии в списке будет производиться выдача краткой информации (названия “бегуна”) в текстовом поле (компонент TextBox) – рис.4.


Рис.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


сначала закрывает все открытые таблицы, а затем грузит таблицу runners в память. Команда


locate for nickname=form1.text1.value


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

Команды


if found()=.T.

Form1.OleBoundControl2.Refresh


проверяют, найдена ли запись, и в случае успеха обновляют содержимое компонента OleBoundControl. Обновление содержимого выполняется командой


Form1.OleBoundControl2.Refresh.


В результате использования нового обработчика для события двойного щелчка на элементе списка будет получено окно приложения, помещенное на рис.7.


Случайные файлы

Файл
28643-1.rtf
182363.rtf
90176.rtf
KULT.doc
ROM-0124.DOC




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.