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

Лабораторна робота 6 меню й вікна в delphi

Меню

Delphi надає два різних компоненти меню: Main Menu (Головне Меню) і Popup Menu (Спливаюче Меню). Main Menu – стандартна панель меню, що є майже у всіх Windows-додатків. Popup Menu – вікно меню, що спливає, коли ви клацаєте правою клавішею миші на формі в Delphi. Menu Designer (Проектувальник Меню) – це невеликий додаток Delphi, що значно спрощує проектування меню й реакції на нього. Menu Designer працює для обох типів меню.

Почніть із нової форми, виберіть компонент Main Menu зі сторінки Standart палітри компонентів, помістіть компонент на форму. Потім виконайте подвійне клацання мишею на новому компоненті для того, щоб з'явилося вікно Menu Designer, показане на рис. 6.1.

Рис. 6.1. Menu Designer

Menu Designer працює разом з Інспектором Об'єктів.

За допомогою Menu Designer створимо меню, остаточний варіант якого показаний на рис. 6.2.

Почнемо зі створення меню File і його елементів.

Рис. 6.2. Приклад закінченого меню

Додавання елементів меню

Коли смуга підсвічування перебуває в далекому лівому куті меню, в Menu Designer уведіть "&File" і натисніть Enter. Це створить меню File і перемістить смугу підсвічування вниз так, що ви зможете ввести перший елемент у меню File. Вікно Menu Designer повинне бути відповідати рис. 6.3.

Рис. 6.3. Створення меню File

Ви, імовірно, звернули увагу на те, що вікно Інспектора Об'єктів змінилося, коли ви почали вводити заголовок меню. Крім, основного меню, кожний елемент меню також є деяким компонентом зі своїми власними властивостями й подіями. У міру того, як ви створюєте нові елементи меню, їхні властивості відображаються у вікні Інспектора Об'єктів. Зверніть увагу, що властивості Name і Caption змінюються, у міру того, як ви вводите елементи меню в Menu Designer.

Для того, щоб створити перший елемент у меню File, уведіть "&Open..." і натисніть Enter. Елемент меню Open повинен бути відображений нижче меню File, при цьому смуга підсвічування переміститися нижче до точки наступного місця вставки. Повторюйте цей процес, тобто введіть текст елемента меню й натисніть Enter, для кожного з наступних елементів у меню File: "&Close", "&Print...", "&Printer Setup..." і "&Exit". Коли ви це зробите, ваше вікно Menu Designer прийме вигляд, показаний на рис. 6.4.

Рис. 6.4. Додавання елементів у меню File

У меню File, що ми тільки що створили, потрібно додати пари роздільників меню так, щоб його елементи були візуально згруповані. Використовуючи клавіші керування курсором, наведіть смугу підсвічування на елемент меню Print і натисніть клавішу Insert. Якщо ви волієте використати мишу, клацніть мишею на елементі меню Print. Потім клацніть правою кнопкою миші, щоб перейти в локальне меню Menu Designer і виберіть Insert. Ви можете також викликати локальне меню, натискаючи Alt+F10. У відповідь Menu Designer створить порожній рядок у меню, переміщаючи елемент Print і всі елементи нижче його вниз на один рядок. Для того, щоб створити роздільник меню, просто введіть "-" (клавіша мінус) і натисніть Enter.

Якщо ви хочете видалити елемент меню, просто виділіть його і натисніть клавішу Delete. Або можете викликати локальне меню, клацнувши правою клавішею миші, і вибрати Delete. Коли ви видаляєте елемент меню, всі його піделементи теж віддаляються.

Додайте другий роздільник у меню File. Виберіть елемент меню Exit, натисніть Insert, потім уведіть "-" і натисніть Enter.

Для того, щоб додати меню Help і його єдиний елемент просто натисніть клавішу переміщення курсору вправо для переміщення смуги підсвічування на порожнє місце – праворуч від меню File, потім уведіть "&Help" і натисніть Enter. Смуга підсвічування переміститься на один рядок, де ви можете ввести "&About". Натисніть Enter для того, щоб створити елемент About меню Help.

Додавання оброблювачів подій

Тепер, коли ви ввели всі елементи меню, необхідно призначити дії окремим елементам меню. Як і для кнопок, ми це робимо за допомогою створення оброблювачів події OnClick.

Menu Designer дозволяє здійснити швидкий спосіб додавання оброблювачів подій для елементів меню. Просто виконайте подвійне клацання мишею на елементі меню, і Delphi автоматично відкриє вікно Unit і встановить курсор на тому місці, де вам належить ввести код для процедури обробки події. Це значно легше, ніж використовувати Object Inspector.

Виконайте в Menu Designer подвійне клацання мишею на елементі меню File/Exit і, коли з'явиться вікно Unit, введіть наступний рядок коду для оброблювача події TForm1.Exit1.Click:

Close;

Процедура форми Close закриває форму, а тут ще й завершує програму, оскільки форма – це головне вікно програми. У програмі з багатьма формами закриття форми необов'язково закриє додаток.

У даному прикладі інші функції елементів меню не виконуються, тому ми зробимо так, щоб всі вони видавали процедуру ShowMessage для відображення повідомлення. Для того, щоб додати процедуру обробки події для елемента меню File/Open, виконайте подвійного щиглика миші на елементі меню File/Open в Menu Designer, потім введіть у процедуру обробки події такий рядок коду:

ShowMessage ( 'File/Open не реалізований' ) ;

Повторіть цю процедуру для кожного з елементів меню.

Тестування меню

Після того, як ви створили оброблювачі подій для всіх елементів меню, збережіть модуль, як MENUFORM.PAS, а проект, як MENUTEST.DPR. Натисніть F9 для того, щоб скомпілювати й запустити проект на виконання.

Щоб побачити, чи працює ваше меню, виберіть який-небудь елемент меню. Якщо ви виберете що-небудь крім File/Exit (який повинен завершити програму), ви повинні побачити вікно повідомлення, показане на рис. 6.5.

Рис. 6.5. Вікно тестування меню

Спливаючі меню

Спливаючі меню багато в чому подібні головному меню додатка, але найчастіше вони служать більш обмеженим цілям. Звичайний додаток буде мати єдине головне меню, а кожне вікно в програми буде мати своє власне локальне меню, реалізоване як спливаюче. Це меню традиційно управляється за допомогою щиглика правою клавішею миші або натисканням Alt+F10.

Створимо невелику програму зі спливаючим меню, що використовує загальні вікна діалогу Font (шрифт) і Color (колір).

Виберіть із головного меню File/New Project, щоб почати із чистої форми. Потім виберіть компонент PopupMenu зі сторінки Standart палітри компонентів і помістите його у вашу форму у верхньому лівому куті. Виконайте подвійне клацання миші на компоненті у вашій формі, щоб викликати Menu Designer.

Спливаюче меню буде мати два елементи: Font і Color. Ви можете додати ці елементи меню в Menu Designer введенням тексту елементів меню "&Font" і "&Color" і натисканням Enter. Після того, як ви створили ці елементи, закрийте вікно Menu Designer.

Додайте у вашу форму компонентів Label. Потім змініть його властивість Caption на текст “Click the right mouse button to activate the popup menu”. Позиціюйте цю мітку у формі так, щоб вона була центрована горизонтально, відразу під компонентом PopupMenu.

Клацніть мишею на порожньому місці вашої форми, щоб неї вибрати, потім в Object Inspector змініть властивість PopupMenu для форми на PopupMenu1. Ви можете ввести це значення у вікні редагування властивості PopupMenu, або вибрати його зі списку, що випадає.

Збережіть роботу, назвавши модуль DLGFORM.PAS, а проект DLGXMPL.DPR. Потім натисніть F9, щоб скомпілювати й запустити програму на виконання. Коли програма запуститься, встановіть курсор миші в області форми й клацніть правою кнопкою миші. Повинне спливти меню, створивши зображення, показане на рис. 6.6.

Рис. 6.6 Активізація спливаючого меню

Оскільки ми не додали ніяких оброблювачів подій для елементів меню, вибір одного з них ні до чого не приведе. Натисніть Alt+F4, щоб завершити програму.

Загальні вікна діалогу

Загальні вікна діалогу – це стандартні вікна діалогу, які використовує безліч Windows-програм, наприклад такі, як вікна діалогу для Font, Color і File Open. Для того, щоб додати Windows-програмам більш загальний вид, фірма Microsoft розробила динамічну бібліотеку COMMDLG.DLL, що підтримує стандартні вікна діалогу. Усі компоненти Delphi, які інкапсулюють цю бібліотеку, розміщені на сторінці Dialogs палітри компонентів. Цими компонентами є: OpenDialog, SaveDialog, FontDialog, ColorDialog, PrintDialog, PribterSetupDialog, FindDialog і ReplaceDialog.

Для того, щоб використати в програмі один з компонентів-вікон загальних діалогів, ви повинні встановити цей компонент у вашу форму, потім забезпечити процедуру обробки події, що управляє компонентом-вікном діалогу. Метод Execute вікна діалогу звичайно повертає True, якщо користувач вибрав Ok, указуючи , що програма використовує будь-які зміни, які зроблені у вікні діалогу. Якщо Execute повертає False, програма повинна проігнорувати значення вікна діалогу.

Використовуючи форму, що ми тільки що спроектували, виберіть компонент Memo і встановіть його у вашу форму нижче мітки-інструкції. Далі зміните розмір і позицію Memo так, як вам хочеться. Потім виберіть компонент FontDialog зі сторінки палітри компонентів Dialogs і помістіть його у форму біля PopupMenu. У цьому прикладі ми також будемо використовувати ColorDialog, так що ви можете захопити і його, з тієї ж сторінки палітри компонентів, і теж помістити у форму поруч із компонентом FontDialog. Коли ви все зробите, ваша форма повинна бути схожа на малюнок 6.7.

Рис. 6.7. Форма прикладів загальних діалогів

Щоб активізувати компонент FontDialog, виконайте подвійне клацання мишею на компоненті PopupMenu, щоб викликати MenuDesigner. Потім виконайте подвійне клацання мишею на елементі меню Font, щоб створити оброблювач події. Введіть код, показаний нижче:

procedure TForm1Font1Click ( Sender: TObject) ;

begin

FontDialog1.Font := Memo1.Font ;

if FontDialog1.Execute then

Memo1.Font := FontDialog1.Font ;

end;

Перший рядок коду встановлює властивість Font компонента FontDialog так, щоб воно відповідало властивості Font компонента Memo. Наступний рядок викликає метод Execute для FontDialog, що відображає вікно діалогу й дозволяє вам установлювати опції. Якщо ви закриваєте вікно діалогу Font, натискаючи кнопку Ok, тоді Execute повертає True. Якщо ви закриваєте вікно діалогу Font будь-яким іншим способом, то Execute повертає False. Останній рядок в оброблювачі події встановлює властивість Font для Memo так, щоб відбити зміни, які ви зробили у вікні діалогу Font. Цей код виконується тільки в тому випадку, якщо FontDialog1.Execute повертає True.

Збережіть вашу роботу й натисніть F9, щоб скомпілювати й перевірити програму. Клацніть правою кнопкою миші в будь-якім місці клієнтської області форми, потім виберіть елемент спливаючого меню Font. Повинне з'явитися вікно діалогу Font, що дозволить вам змінити шрифт форми. Якщо ви натиснете Ok, шрифт тексту в Memo зміниться.

ColorDialog дозволяє вам вибирати з 48 різних квітів, якщо ви можете визначити спеціальні кольори, які використовують всі переваги вашого дисплея. Використання компонента ColorDialog дуже схоже на використання FontDialog.

Ми вже помістили компонент ColorDialog у нашу форму, і в нас є елемент меню, щоб їм управляти. Усе, що треба зробити, це їх з'єднати.

Виконайте подвійне клацання мишею на компоненті PopupMenu, щоб викликати Menu Designer, виконайте подвійне клацання мишею на елементі меню Color для створення процедури обробки події, потім введіть наступний код:

procedure TForm1.Color1Click ( Sender: TObject ) ;

begin

ColorDialog1.Color := Memo1.Color ;

if ColorDialog1.Execute then

Memo1.Color := ColorDialog1.Color ;

end;

Збережіть вашу роботу й натисніть F9, щоб протестувати програму. Коли ви виберете Color зі спливаючі меню, з'являється ColorDialog і дозволяє вам вибрати колір, або визначати спеціальний колір. Коли ви натискаєте Ok, колір фону компонента Memo змінюється, відбиваючи ваш новий обраний колір.

Завдання для самостійної роботи:

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

  1. Забезпечте за допомогою пункту меню для відкриття файлів виклик загального діалогу OpenDialog для відображення змісту текстових файлів в окремому вікні.