- •« Автоматизація проектування графічного плану виробничого приміщення »
- •« Автоматизація проектування графічного плану виробничого приміщення »
- •« Автоматизація проектування графічного плану виробничого приміщення »
- •« Автоматизація проектування графічного плану виробничого приміщення »
- •Пробна програма визначеня кутів , (у градусах) і координат точки в1.
- •« Автоматизація проектування графічного плану виробничого приміщення »
- •« Автоматизація проектування графічного плану виробничого приміщення »
« Автоматизація проектування графічного плану виробничого приміщення »
Частина 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).
З Зразок створення застосунку