ТОП 10:

Розробка проекту «Графічний конструктор»



Завдання. Створити програму, за допомогою якої користувач зміг би із запропонованого набору фігур зібрати та розфарбувати машинку, повантажити на неї мишку та відправити її в дорогу. «Урочисту» подію старту відзначити святковим салютом

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

Для розробки цього проекту скористаємось такими компонентами Delphi:

Ø Animate (вкладка Win32 палітри компонентів) – анімація, що використовується для виведення стандартних відео кліпів ОС Windows та «німих» відеофайлів *.avi;

Ø Timer (вкладка Systemпалітри компонентів)– таймер. Використовується для відліку інтервалів реального часу;

Ø ProgressBar (вкладка Win32 палітри компонентів)– індикатор процесу, за допомогою якого можна відображати перебіг виконання певного процесу.

 

Для збирання машинки основне поле форми відведемо під компонент Panel, з яким ви вже ознайомлені, але компонент Panel використовуватиметься для об'єднан­ня кількох компонентів.

На цьому компоненті будемо розміщувати деталі конструктора: різні види компонента Shape (вкладка Additional палітри компонентів) – фігу­ра, компонент Image та компонент Label. Для того, щоб ці компоненти були «прив'язані» до компонента Panel, необхідно спочатку розмістити на формі цей компонент, а потім з палітри компонентів розміщувати дочірні компоненти.

Для організації перетягування фігур скористаємось комбінацією об­робки подій: «кнопка миші натиснута», «кнопки миші утримується», «кноп­ка миші відпущена».

Як відомо, до складу ОС Windows входять типові діалогові вікна (вікна вибору: файла, шрифту, кольору, настройки принтера тощо). У цьому проекті ми використаємо засіб Delphi, який дає змогу організувати вик­лик стандартних вікон Windows (додати до проекту невізуальні компонен­ти вкладки Dialogs).

ХІД РОБОТИ

Алгоритм розробки проекту

1. Створити папку С:\Delphi\lab_12.

2. Створити новий проект.

3. Розмістити на формі компоненти Label1, Panell, BitBtnl. Встановити цим компонентам властивості за табл. 1.

Таблиця 1

Компонент Вкладка вікна «Інспектор об’єктів» (Object Inspector) Властивість (Properties)/ Подія (Events) Значення властивості/ обробка події (тіло процедури обробки події)
Label1 Properties AutoSize False
WordWrap True
Caption Збери машинку. Повантаж мишку на машинку та натисни «Готово»
Panel1 Properties Caption Чисте поле
AutoSize False
Ctl3D False (відключення тривимірного зображення)
Color clBtnFace (колір об’єкта збігається з кольором форми)
BitBtn1 Properties Kind blAll
Caption Готово

Пояснення. Кнопка «Готово» запускатиме салют і відправлятиме миш­ку в дорогу.

4. Компоненту Раnel1 надати такого розміру, щоб він зайняв всю фор­му від компонента Label1 до кнопки BitBtnl. На панелі Panell розмістити геометричні фігури Shapel-Shape3 (три прямокутника: кузов, кабіна, вікно кабіни) та Shape4, Shape5 – два кола (колеса). Для встановлення виду фігури використати властивість Shape, для встановлення стилю та кольору зафарбовування використати властивості Brush.Color, Brush.Style, для встановлення кольору та типу лінії контуру використати властивості Pen.Color, Pen.Style. На компоненті Panell розмістити такі об'єкти, як на табл. 2.

Таблиця 2

Компонент Вкладка вікна «Інспектор об’єктів» (Object Inspector) Властивість (Properties)/ Подія (Events) Значення властивості/ обробка події (тіло процедури обробки події)
Label2 Properties Caption Миші (напис для кузова)
Imagel Properties Picture Відкрити графічний файл із зображенням миші

Зауваження. Якщо планується, що при конструюванні машинки одні об'єкти будуть накладатися на інші (наприклад, вікно кабіни на кабіну), то встановити порядок розташування об'єктів: активізувати об'єкт, виклика­ти правою кнопкою миші контекстне меню, вибрати компонент. Зробити нижнім (верхнім).

5. Для всіх компонентів, розміщених на панелі Panel1, запрограмува­ти перетягування об'єктів по панелі. Для цього створити для цих компо­нентів процедури опрацювання подій OnMouseDown (кнопку натиснуто), OnMouseMove (кнопка миші утримується натиснутою), OnMouseUp (кнопку відпущено):

procedure TForml.Label2MouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);

Begin

flag:=False;

end;

procedure TForml.Label2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) ;

Begin

xl:=x;yl:=y; flag:=True;

end;

procedure TForml.Label2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

Begin

if flag then with TShape (sender) do begin Left:=Left+x-xl;Top:=Top+y-yl; end;

end;

Пояснення. Якщо під час виконання програми кнопка миші буде натиснута в той час, коли її курсор знаходиться в області компонента Label2, змінні х1 і х2 запам'ятають координати розміщення фігури, а прапорець flag отримає значення True, що означатиме «перетягу­вання почалось». Якщо кнопку миші не відпускати й рухатись, то пра­цюватиме процедура TForml.Label2MouseMove, в якій відбувати­меться перерахування координат об'єкта Label2 стосовно системи ко­ординат форми.

Після того, як кнопка миші буде відпущена, спрацює процедура TForml.Label2MouseUp, де прапорець flag отримає значення False – перетягування закінчилось.

6. Зберегти проект у палці C:\Delphi\lab_l2.

7. Запустити проект та перевірити правильність його виконання: пе­ретягуючи об'єкти на панелі – зібрати машинку та повантажити мишку на машинку. Кнопка «Готово» поки не працює.

8. Розмістити на формі об'єкт Animatel (праворуч або ліворуч від компонента Labell) – для відображення відеокліпу. Розмістити в будь-якому місці форми об'єкт Timerl – для відліку інтервалів часу. Таймер включається при присвоєнні значення True його властивості Enabled і виключається, коли виконується Timerl.Enabled:=False;

9. Поруч з кнопкою «Готово» розмістити об'єкт ProgressBarl – для відображення процесу анімації. Цей об'єкт використовується для відображення виконання тривалого процесу, який починається з мо­менту включення таймера. Його властивості Міn та Мах – значення діапазону зміни. Властивість Position містить поточне значення вели­чини.

 

10. Встановити об'єктам такі властивості (табл. 3).

Таблиця 3

Компонент Вкладка вікна «Інспектор об’єктів» (Object Inspector) Властивість (Properties)/ Подія (Events) Значення властивості/ обробка події (тіло процедури обробки події)
Animate1 Properties Active False
AutoSise True
Visible False
Timer1 Properties Interval
Enabled False
ProgressBar1 Properties Visible False
Max

11. Для кнопки «Готово» створити процедуру обробки події OnClick:

Labell.Font.Color:=clblue;

Labell.Caption:='Щасливої дороги!';

Animate1.FileName:='bart.avi';

Animatel.Active:=True;

Animatel.visible:=True;

Timerl.Enabled:=True;

ProgressBar1.Visible:=True;

ProgressBarl.show;

12. Для таймера створити процедуру обробки події ОnТіmеr (для цьо­го у вікні Інспектор об'єктів на вкладці Events (Події) двічі клікнути у полі праворуч від події ОnТіmеr):

ProgressBarl.Position:=ProgressBarl.Position+1;

if ProgressBarl.Position>=ProgressBarl.max then

begin

Timerl.enabled:=False;

ProgressBarl.Position:=0;

ProgressBarl.hide;

Animatel.Stop;

end;

13. Зберегти проект у палці C:\Delphi\lab_l2.

14. Запустити проект та перевірити правильність його виконання.

 

Питання для самоконтролю:

1. Які компоненти надає Delphi в розпорядження програміста, що дозволяють розробляти мультимедійні програми?

2. Який компонент дозволяє відтворювати просту анімацію, кадри якої знаходяться в Avi-файлі?

3. Яка властивість зберігає ім'я Avi-файла, в якому знаходиться анімація, що відображається за допомогою компоненту?

4. Яка властивість задає номер кадру, з якого починається відображення анімації?

5. Яка властивість задає номер кадру, на якому закінчується відображення анімації?

6. Яка властивість задає кількість повторів відображення анімації?

7. Який компонент дозволяє відтворювати відеоролики, звук і супроводжувану звуком анімацію?

8. Яка властивість визначає компонент, на поверхні якого відтворюється відеоролик?

9. Яка властивість визначає видимі кнопки компоненту, а також дозволяє зробити невидимими деякі кнопки?

10. Яка властивість задає ознаку автоматичного відкриття відразу після запуску програми, файла відеоролика або звукового фрагмента?


Лабораторна робота №13

Тема: Створення програми типу клієнт-сервер.

Мета роботи: Створити програму, яка обробляє клієнтські запити використовуючи Delphi.







Последнее изменение этой страницы: 2016-04-18; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.234.244.18 (0.01 с.)