
- •Оглавление Оглавление
- •Теоретические основы Визуального программирования.
- •Лабораторная работа №1 Знакомство со средой Dеlphi.
- •Лабораторная работа №2. Объекты: Кнопка. Label
- •Лабораторная работа № 3. Свойства Объектов.
- •Лабораторная работа № 4. Программирование линейной структуры
- •Лабораторная работа №5. Оператор ветвление в дельфи..
- •Лабораторная работа №6. Оператор ветвление в дельфи.
- •Лабораторная работа № 7 Программа "Квадратное уравнение"
- •Лабораторная работа № 8 «Программы с циклами в Delphi»
- •Лабораторная работа № 9 «Программа "Вклад"»
- •Лабораторная работа № 10 «Целочисленный Калькулятор».
- •Лабораторная работа № 11 «Графика в Дельфи».
- •Вывод текста
- •Лабораторная работа № 1? «Графика в цикле».
- •Лабораторная работа № 1? «Графика в цикле». ?????????
- •Лаб работа . Дополнительный материал по теме графика.
- •Лабораторная работа №12. Обработка событий в графике.
- •Лабораторная работа № 13 «Графика в Дельфи».
- •Лабораторная работа № 14 «Графика в Дельфи». Продолжение
- •Лабораторная работа № Светофор
- •Лабораторная работа № Летающий шарик.
- •Лабораторная работа Вывод графиков функций в Delphi
- •Лабораторная работа Построение графиков в среде Delphi.
- •Лабораторная работа № Метод базовой точки. Кораблик
- •Лабораторная работа № Метод базовой точки. Машина
- •Лабораторная работа Битовые образы
- •Самостоятельные программы
- •1. События и обработка событий
- •14. Работа с графикой в окне формы
Лабораторная работа №12. Обработка событий в графике.
Приложения Delphi используют управляемые событиями методы для организации взаимодействия между программой и пользователем. Большая часть кода как правило инициирует события. Происхождение событий заставляет работать определенный объект, при этом объект получает заранее определенные параметры для своей настройки на работу. В Delphi процедура, инициируемая событием, называется обработчиком событий.
События делятся на три основные категории:
события мыши;
события клавиатуры;
системные события.
Рассмотрим как теорию применить на практике.
События мыши.
Для формы событие OnClik возникает в том случае, если пользователь нажимает левую кнопку мыши в то время, когда курсор находится на поле формы.
Создайте форму.
В Object Inspector (Инспектор Объектов) во вкладке Events (события) выполните двойной клик слева от события OnClik.
В открывшемся окне появится модуль заготовки процедуры обработки события OnClik. Впишите ниже приведенную строку. Данный оператор Color позволяет изменять цвет любого объекта типа Form1.
procedure TForm1.FormClick(Sender: TObject);
begin
color:=RGB(random(256), random(256), random(256));
end;
Функция random – генератор случайных чисел. Аргумент функции (256) определяет границу генерируемого числа (от 0 до 256).
Задание №1. Напишите приложение, в котором при нажатии на левую кнопку мыши происходит смена цвета с зеленного на красный, и, наоборот, с красного – на зеленый
Событие OnDblClick происходит, если пользователь выполняет двойной щелчок левой кнопкой мыши.
События On MouseDown возникает, если пользователь нажимает на правую, левую или среднюю кнопку мыши
Задание №2. Самостоятельно исследуйте событие OnDblClick. Измените цвет формы и свойство Cursor. Числовой эквивалент свойства Cursor находится в интервале от -21 до 0.
Задание №1.
procedure TForm1.FormClick(Sender: TObject);
begin
if color=clRed then color:=clGreen else color:=clRed;
end;
Задание №2.
procedure TForm1.FormDblClick(Sender: TObject);
begin
Color:=clred;
end;
1. Создайте новую форму. Свойства объекта установите следующим образом:
Caption := графика.
Name :=MainF;
Чтобы нарисовать на форме пунктирную линию красного цвета от точки с координатами (10,10) до точки (300,300) создайте обработчик событий формы Click (двойной клик) и наберите следующие операторы:
procedure TForm1.FormClick(Sender: TObject);
begin
with Canvas do
begin
pen.Color:=clred;
pen.Style:=PsDash;
MoveTo(10,10);
LineTo(300,300);
end
end;
Пояснения: Свойство Pen устанавливает параметры изображения линии, такие как цвет (Color), тип (Style), толщина (Width)
Метод MoveTo(x,y) перемещает графический курсор в точку с координатами (x,y).
Метод LineTo(x,y) рисует отрезок от текущего положения графического курсора до точки с координатами (x,y).
Задание. Напишите программу позволяющую нарисовать схематическое изображение домика.
2. Удалите предыдущую программу командой Close all… Создайте новую форму. Свойства объекта установите следующим образом:
Caption := графика.
Name :=MainF;
Для рисование произвольных отрезков воспользуемся событие OnMouseDown. Нажатие кнопки мыши послужит началом рисования отрезка, освобождение кнопки мыши – завершает рисование отрезка.
Создайте обработчик события OnMouseDown (двойной клик)
procedure TmainF.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
canvas.MoveTo(x,y);
end;
Создайте обработчик события OnMouseUp (двойной клик)
procedure TmainF.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Canvas.LineTo(x,y);
end;
3. Удалите предыдущую программу командой Close all… Создайте новую форму. Свойства объекта установите как в предыдущим задании.
Рисование кривых линий – это изображение следа курсора мыши. Перемещение курсора мыши возбуждает событие OnMouseMove. Создайте обработчик этого события и введите следующие операторы:
procedure TmainF.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Canvas.LineTo(x,y);
end;
Недостатком написанной процедуры является:
1 – начало рисования левый верхний угол;
2 – невозможно завершить процесс.
Обработчик события OnMouseMove в параметре Shift получает состояние клавиш Alt, Ctrl, Shift и кнопок мыши. Для определенности положим, что линия будет рисоваться, когда нажата левая кнопка мыши. Изменим обработчик события следующим образом:
procedure TmainF.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then Canvas.LineTo(x,y)
else Canvas.MoveTo(x,y);
end;
Рассмотрим некоторые ранее описанные методы.
Метод Rectangle(x1,y1,x2,y2) в котором параметры задают координаты противоположенных вершин прямоугольника. Нажатие кнопки мыши (события OnMouseDown) фиксирует начало рисования прямоугольника и соответственно определяет координаты правого верхнего угла прямоугольника. Освобождение кнопки (событие OnMouseUp) – окончание рисования прямоугольника и соответственно определяет координаты правой нижней точки прямоугольника.
Создайте обработчики этих событий и введите следующие операторы:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
x1:=x;
y1:=y;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Canvas.Rectangle(x1,y1,x,y);
end;
Переменные x1,y1 являются глобальными переменными их нужно описать в разделе private класса TMainF.
Объединение отрезков A1A2, A2A3, … AN-1AN образуют ломаную А1А2А3 … АN Начало ломаной – это точка А1, конец – точка АN. Для рисования ломаной нужно задать ее начало, затем нарисовать звенья и наконец завершить ломаную. Начало (конец) рисования ломаной линии свяжем с событием OnDblClick. Введем логическую переменную Draw: ее значение, равное True – будет обозначать рисование ломаной, False – завершение ломаной. В разделе interface модуля введите раздел констант (после раздела описания переменных – Var).
Const draw: Boolean= False;
Создайте обработчик события OnDblClick:
procedure TForm1.FormDblClick(Sender: TObject);
begin
draw := not draw;
end;
В обработчике события OnMouseDown будем рисовать звенья ломаной, Если значение переменной Drawравно True и перемещать графический курсор, в противном случае. Дописать