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).
|