Создание пользовательских классов. Создание класса, содержащего кнопку, передвигающуюся по форме в произвольном направлении, не выходя за пределы формы

Страницы работы

Содержание работы

Министерство Образования РФ

Новосибирский Государственный Технический Университет

Кафедра ВТ

Лабораторная работа № 7

по дисциплине «Базы данных»

Создание пользовательских классов

Вариант 2

Выполнил:
Студент Козионов К.В.

Группа: АМ-010

Преподаватель: Трошина Г.В.

Новосибирск 2003

Цель работы: изучить средства Visual FoxPro 6.0 которые могут быть использованы для создания пользовательских классов. Получить практические навыки работы с классами.

Задание

Реализовать наследование классов. Например создать класс содержащий кнопку, передвигающуюся по форме в произвольном направлении, не выходя за пределы формы. Форма также должна содержать элементы управления - изменяющие цвет, направление движения кнопки. Диаграмма должна отображать в каком направлении передвигалась кнопка в течение заданного времени. Таймер должен показывать сколько времени двигалась кнопка в определенном направлении. Таймер должен быть реализован на основе предложенного преподавателем класса.

Для выполнения этой работы необходимо реализовать три класса: CRButton, CTimer, Diagramm.

CRButton – это класс непосредственно кнопки. Реализован в идее контейнера, в который вставлены таймер и кнопка. Кнопка реагирует на нажатие мышки на ней. Таймер Запускает процедуру обновления положения кнопки на экране и накопление времени движения кнопки в различных направлениях.

Вот рисунок из редактора классов.

Рис. 1. Общая структура классов

Рис. 2. Контейнер с кнопкой и таймером.

Вот код контейнера:

Init

this.mdirect = "stop"

this.time_up = 0

this.time_down = 0

this.time_left = 0

this.time_right = 0

OnTimer

     do case

     case this.mdirect = "up"

               this.top = this.top - 1

               this.time_up = this.time_up + this.timer_run.interval

               if (this.top = 0)

                         this.top = thisform.height

               endif

     case this.mdirect = "down"

               this.top = this.top + 1

               this.time_down = this.time_down + this.timer_run.interval

               if (this.top = thisform.height)

                         this.top = 0

               endif

     case this.mdirect = "left"

               this.left = this.left - 1

               this.time_left = this.time_left + this.timer_run.interval

               if (this.left = 0)

                         this.left = thisform.width

               endif

     case this.mdirect = "right"

               this.left = this.left + 1

               this.time_right = this.time_right + this.timer_run.interval

               if (this.left = thisform.width)

                         this.left = 0

               endif

endcase

this.move(this.left, this.top)

CTimer – класс, реализующий счётчик по направлениям. Он считывает значения, накопленные в классе CRButton и выводит их на экран в текстовое поле, кроме того, может отчищать счётчик.

Рис. 3. Общий вид контейнера

OnTimer

     if (this.direct = "up")

this.sec.value = thisform.crbutton.time_up/1000

endif

if (this.direct = "down")

this.sec.value = thisform.crbutton.time_down/1000

endif

if (this.direct = "left")

this.sec.value = thisform.crbutton.time_left/1000

endif

if (this.direct = "right")

this.sec.value = thisform.crbutton.time_right/1000

endif

Clear_Timers

if (this.direct = "up")

thisform.crbutton.time_up = 0

endif

if (this.direct = "down")

thisform.crbutton.time_down = 0

endif

if (this.direct = "left")

thisform.crbutton.time_left = 0

endif

if (this.direct = "right")

thisform.crbutton.time_right = 0

endif

Diagramm – это контейнер, содержащий внутри себя OLE объект – диаграмму EXEL. Эта диаграмма создавалась следующим образом. Сделали таблицу, в единственным полем типа General. В это поле вставили диаграмму, соответствующей формы. В Диаграмме есть:

Рис. 4. Таблица Exel в которой хранятся данные для диаграммы

Сама диаграмма выглядит вот так:

Рис. 5. Общий вид Диаграммы.

После нескольких минут стараний, собираем все классы в форме, после чего она выглядит так:

Рис. 6. Стадия разработки формы управления.

Теперь просто запускаем форму, о чудо, всё работает. Таймер обновления формы берёт период, через который обновляется форма из текстового поля.

Рис. 7. Пример работы формы.

Похожие материалы

Информация о работе

Предмет:
Базы данных
Тип:
Отчеты по лабораторным работам
Размер файла:
143 Kb
Скачали:
0