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

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

Частина 6.

Побудова багатокутника з допомогою мишки і спеціально створеної процедури побудови багатокутника.

На формі Form3 розміщають об’єкти, про які йдеться в наступних пунктах:

1. Із закладки win32 вибирають компоненту TStatusBar – в якій планується відображати координати вершин багатокутника і вкладають її на форму (рисунок 50 внизу).

2. У інспекторі об’єктів вибирають властивість Panels (Рисунок 50 – зліва вгорі). Активізують кнопку і отримують відкрите діалогове вікно Editing, яке є відображене на рисунку 51 (зліва).

Рисунок 50.Поява у проекті застосунку нового об’єкту ТStatusBar.

3. Наводять курсор на значок жовтого кольору, тримають поки не зявиться підказка (Add New (Ins)), як це показано на другому зліва зображенні рисунка 51.

Рисунок 51 Діалогове вікно кількості панельок об’єкту ТStatusBar.

4. Клацають на вибраний жовтий значок - з’являється пронумеровани член списку 0 - StatusBar. При наступному клацанні- 1- StatusBar. Доводять до цифри 7 (рисунок 51 правий).

5.Активізують першу панель (нульову) і її властивості Text з допомогою Інспектора об’єктів надають з клавіатури значення А, а властивості width – значення 50 (рисунок 52). Наступній панелі шириною 50 у властивість Text вписують значення В. Далі іншим панелям надають властивості width значення 100 , а властивості Text по черзі надають такі значення: X1,Y1,X2,Y2,X3,Y3 (рисунок53).

Рисунок 52 Діалогове вікно кількості панельок об’єкту ТStatusBarі ї їх властивості.

Рисунок 53 Статус бар із значеннями властивості Text.

6. На форму виставляють компоненту класу TMemo . За допомогою інспектора об’єктів записують заголовок <X Y>, як показано на рисунку 54.

Рисунок 54 Додано об’єкт класу TMemo .

7. Користуючись процедурами, які представлені у пункті 5 першої частини доповнюють дану програму новою процедурою опрацюванням події OnMouseUp форми Form3:

procedure TForm3.FormMouseUp (Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if (ssAlt in Shift) then

begin

canvas.MoveTo(x,y);

StatusBar1.Panels[2].Text:='x1'+' '+intToStr(x);

StatusBar1.Panels[3].Text:='y1'+' '+intToStr(y);

end;

if (ssShift in Shift) then

begin

canvas.LineTo(x,y);

memo1.Lines.Add(IntToStr(x) +' '+ IntToStr(y) );

end

end;

8. Доповнюють програму процедурою, що показуватиме на панелях А і В статусного рядка поточні значення координат курсору під час його переміщення:

procedure TForm3.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

StatusBar1.Panels[0].Text:='А'+' '+intToStr(x);

StatusBar1.Panels[1].Text:='В'+' '+intToStr(y);

end;

9. Запускають командою Run програму і рухаючи курсором по вікні з допомогою мишки переконуються у дієвості – тобто відображення координат курсора у панельках А і В (рисунок 55):

Рисунок 55 На панелях А і В показані поточні координати X =103, Y=528 курсора.

10. Наводять курсор у підібране для першої точки багатокутника місце, натискають клавішу Alt і не відпускаючи її клацають один раз по будь-якій кнопці мишки. На рисунку 56 показано координати цієї точки: x1=514 , y=343. Це точка, яка розміщена правіше від об’єкта класу TMemo.

Рисунок 56 На панелях А і В показані поточні координати X =514, Y=343 курсора.і такіж координати при першому клацанні присвоєні першій точці з координатами X1,Y1.

11. Вдруге клацають по будь-якій кнопці мишки перед тим навівши курсор у місце розташування другої точки багатокутника. Під час клацання повинна утримуватись натиснутою клавіша Shift. При цьому у полі TMemo з’являться координати цієї другої точки X=626, Y=358 (рисунок 57). При наступних клацаннях і утриманні натиснутою клавіші Shift відзначаються у полі об’єкта класу TMemo координати усіх інших точок багатокутника, а на формі відображається власне сам цей багатокутник.

Рисунок 57 Відображений на формі багатокутник, у статусній лінійці координати його першої точки, а у об’єкті класу TMemo показані координати усіх інших точок, у тому числі останньої (516,343), яка по суті співпадає з першою (514,343).

12. Для того щоб, установлення останньої точки багатокутника автоматично співпало з місцем встановлення його першої точки, у код підпрограми FormMouseUp вносять зміни. Тепер вона набуває такого вигляду:

procedure TForm3.FormMouseUp(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

if (ssAlt in Shift) then

begin

canvas.MoveTo(x,y);

x1:=x; // програмно фіксується координата Х першої точки

y1:=y; // програмно фіксується координата Y першої точки

StatusBar1.Panels[2].Text:='x1'+' '+intToStr(X1);

StatusBar1.Panels[3].Text:='y1'+' '+intToStr(Y1);

end;

if (ssShift in Shift) then

begin

// фіксується окіл наближення до координати х1 (зліва і справа по 10 пікселів)

// фіксується окіл наближення до координати y1 (зверху і знизу по 10 пікселів)

if (((x>(x1-10))and (x<(x1+10)))and((y<(y1+10))and (y>(y1-10)))) then

begin

canvas.LineTo(x1,y1);

// виводяться координати , що попадають в окіл першої точки

memo1.Lines.Add(IntToStr (x1) +' '+ IntToStr (y1) );

end

else // виводяться координати , що не попадають в окіл першої точки

begin

canvas.LineTo(x,y);

memo1.Lines.Add(IntToStr(x) +' '+ IntToStr (y) );

end; end; end;

13. Запускають команду Run, будують багатокутник і спостерігають за тим, як при клацанні поблизу відображеної першої точки координати останньої співпадають з координатами першої (рисунок 58).

Рисунок 58 Відображений на формі багатокутник, у статусній лінійці координати (521,293) його першої точки повністю співпадають з координатами останньої точки у списку об’єкта класу TMemo.

14. Задля того, щоб автоматично надати значення масиву координат Х і масиву координат Y вводять

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