Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mause_canvas1.doc
Скачиваний:
1
Добавлен:
15.09.2019
Размер:
32.21 Mб
Скачать

« Автоматизація проектування графічного плану виробничого приміщення »

Частина 3.

Створення та розміщення на виробничій площі графічних проекцій нерухомого обладнання і обмежувальних ліній червоного кольору :

1. Відкривають вікно коду нового модуля File > New > Unit і зберігають його під запланованим іменем, наприклад: Equipments.

2. В розділі interface задекларовують процедуру figura1_show (sender:TObject), яка б мала слугувати графічному відтворенню певної геометричної двовимірної побудови на тлі форми, ім’я якої визначатиметься згодом, тобто під-час використання цієї підпрограми, як вкладеної в тіло деякої певної процедури – що відтворюватиме конкретну подію .

unit Equipments;

interface

procedure figura1.show (sender:TObject);

implementation

end.

3 У розділі implementation описують код цієї процедури, використовуючи у ньому оператор класу as у конструкції sender as TForm, оскільки «винуватцем події» може, за задумом розробника застосунку стати будь-який представник класу TForm. Для того, щоб уможливити використання властивості Canvas слід долучити до розділу uses модуль Forms в якому є описаним клас ТCanvas.

unit Equipments;

interface

uses Forms;

procedure figura1_show (sender:TObject);

implementation

procedure figura1_show (sender:TObject);

begin

(sender as TForm).Canvas.MoveTo(50,50);

(sender as TForm).Canvas.lineTo(100,50);

(sender as TForm).Canvas.lineTo(100,80);

(sender as TForm).Canvas.lineTo(50,80);

(sender as TForm).Canvas. lineTo(50,50);

end;

end.

4. У вікні форми Form2 встановлюють кнопку Button4, надаючи її властивості сaption значення <встановити обладнання> і подвійним клацанням відкривають заготовлену підпрограму Button4Click.

5. До розділу коду вікна форми uses долучають назву модуля Equipments.

6. В тіло підпрограми Button4Click вставляють назву процедури figura1_show надаючи її параметру sender фактичного значення – form2.

procedure TForm2.Button4Click(Sender: TObject);

begin

figura1_show (form2);

end;

7.Запускають прикладну програму і клацають по кнопці <сітка колон> і <встановити обладнання> . Спостерігають отримане зображення (рисунок 23).

Рисунок 23 - встановлений прямокутник (обладнання).

7.1 Якщо в застосунку спочатку клацнути по кнопці <встановити обладнання>, а опісля по кнопці <сітка колон> , то зображення набуде дещо іншого вигляду – обладнання частково «заховається» за колону.

Рисунок 24 - встановлений прямокутник (обладнання) – частково «заховався» за колоною.

8. До модуля Equipments у його розділ interface долучають оголошення процедури procedure figura2_show (sender:TObject;x1,y1,x2,y2:integer) для створення прямолінійного червоного відрізка товщиною у 4 пікселя. Для цього використовують конструкцію with canvas do begin, але її слід доповнити власником цієї властивості – представником класу TForm.

9. У розділ uses модуля Equipments долучають модуль Graphics , адже саме він містить у собі клас TColor.

10. У розділ implementation даного модуля додають код тільки но оголошеної процедури.

procedure figura2_show (sender:TObject;x1,y1,x2,y2:integer);

begin

with (sender as TForm).canvas do

begin

pen.Color:=clRed;

pen.Width:=4;

end;

(sender as TForm).Canvas.MoveTo(x1,y1);

(sender as TForm).Canvas.lineTo(x2,y2);

with (sender as TForm).canvas do

begin

pen.Color:=clBlack;

pen.Width:=1;

end;

end;

11. На форму Form2 виставляють кнопку Button5 і надають її властивості сaption значення < виділення курсором >. Подвійним клацанням створюють заготовку процедури Button5Click і у її тіло вкладають процедуру figura2_show із параметром sender, якому надане фактичне значення - Form2 і параметрами x1,y1,x2,y2, значення яким передбачається надавати користувачем з допомогою курсора і мишки у події OnMouseDown.

procedure TForm2.Button5Click(Sender: TObject);

begin

figura2_show (form2,x1,y1,x2,y2);

end;

12. Для того, щоб значення параметрів можна було передавати між різними подіями дооголошують їх у розділі декларації змінних модуля. Отже серед глобальних оголошень дописано: x1,y1,x2,y2: integer.

var Form2: TForm2; sx,sy:integer; x1,y1,x2,y2:integer;

13. На вікні форми вистваляють зверху - донизу додаткові компоненти: SpinEdit1, SpinEdit2, SpinEdit3, SpinEdit4. Вони призначені для візуалізації координат курсора під-час вибору розміщення точки (x1,y1) і точки (x2,y2).

14. Доопрацьовують існуючу процедуру FormMouseDown, прописуючи у ній додаткові кодові рядки:

if (button=mbmiddle) then

begin

x1:=X;

y1:=Y;

spinedit1.Value:=x1;

spinedit2.Value:=y1;

end;

if ((ssctrl in shift)and(button=mbright)) then

begin

x2:=X; spinedit3.Value:=x2;

y2:=Y; spinedit4.Value:=y2;

end;

15. Запускають прикладну програму. Натискаючи середню клавішу мишки у потрібному місці вікна застосунку отримують значення x1 у полі SpinEdit1 і y1 у полі SpinEdit2. Натискаючи праву клавішу мишки і одночасно утримуючи клавішу Ctrl у потрібних місцях вікна форми мають значення x2 у полі SpinEdit3 і y2 у полі SpinEdit4 .

Зауваження: подія OnMouseDown на відміну від OnMouseup частенько даватиме збій, оскільки відпускання клавіші є однозначною подією, а натискання доволі неоднозначною. Отже мова про те, що потрібно буде уважно контролювати стан натиснутої клавіші мишки.

16. Натискають кнопку < виділення курсором > і спостерігають за появою передбаченої червоної жирної лінії (рисунок 25).

16.1. Якщо з коду figura2_show (пункт 10) прибрати фрагмент повернення до чорного кольору і товщини в один піксель, то після натискання на кнопку <витерти все> отримаємо грубу координатну сітку червоного кольру (рисунок 26). Та й натискання на кнопку <мережа колон> призведе до червоного їх контуру.

Рисунок 25 - встановлена за вказаними курсорсором координатами 117,180, 212,114 червона лінія

Рисунок 26 – координатна сітка « потовщала і почервоніла»

17. Доповнюють опрацювання події Button5Click фрагментом підкреслоного нижче коду, що надаватиме можливість користувачеві власноруч виставляти координати червоних потовщених обмежувальних ліній.

procedure TForm2.Button5Click(Sender: TObject);

begin

x1:= spinedit1.Value;

y1:= spinedit2.Value;

x2:= spinedit3.Value;

y2:= spinedit4.Value;

figura2_show (form2,x1,y1,x2,y2);

end;

18. Після запуску прикладної програми змінюють значення у полі SpinEdit4 від 114 пікселів (рисунок 25) до 134 пікселів (рисунок 27).

Рисунок 27 – Зміщення правої точки обмежувальної лінії вниз

19. Натискають кнопку < виділення курсором > і отримують зміщення правої точки до долу на 20 пікселів (рисунок 27).

З Зразок створення застосунку

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]