Динамічна настройка меню
Для створення і зміни меню в процесі розробки програми в середовищі Delphi призначений Конструктор меню (Menu Designer). Запуск Конструк-тора меню можна виконати за командою Menu Designer (Конструктор меню) контекстного меню компонента MainMenu або PopupMenu, а також з по-міццю подвійного клацання миші на цих же компонентах. Попередньо один з цих компонентів слід додати на форму. Нагадаємо, що кому-тами MainMenu і PopupMenu розміщуються на сторінці Standard (Стандартна) Палітри компонентів.
При конструюванні меню можна також переміщати покажчиком миші пункти меню і підміню за технологією drag-and-drop. Використовуваний со-вместно з Конструктором меню Інспектор об'єктів дозволяє управляти властивостями окремих пунктів меню. Зокрема, найменування пункту меню задається шляхом присвоєння потрібного значення його властивості caption.
За допомогою Конструктора створення та налаштування меню ведеться при створенні програми. Крім того, меню можна створювати або змінювати динамічно безпосередньо при виконанні програми. Наприклад, можливо:
- створити нове меню будь-якого типу або видалити його;
- заблокувати або розблокувати окремі пункти;
- зробити пункт меню видимим або невидимим;
- додати або видалити пункт меню;
- змінити назву пункту;
- встановити або прибрати позначку пункту;
- переключити форму з одного головного меню на інше.
Ці можливості забезпечуються установкою властивостями пунктів меню тре-буєм значень і викликом відповідних методів.
Для додавання пунктів меню використовуються методи Add і insert, для уда-лення пунктів меню використовується метод Delete.
Процедура Add (item: TMenuitem) додає визначається параметром item елемент в кінець підміню, яке викликало цей метод. Якщо підміню не існувало, то воно створюється.
Приклад. Додавання пункту меню.
procedure Forml.mnuItemAddClick (Sender: TSender);
var Newltem. TMenuitem;
NewItem.Caption: = 'Новий елемент;
end; Додавання нового пункту проводиться в кінець списку команд меню Файл. Додається пункт має заголовок Новий елемент. Попередньо новий пункт створюється конструктором Create.
Процедура Insert (Index: Integer; Item: TMenuItem). на відміну від попереднього методу, додає новий пункт меню на зазначене положення. Параметр index визначає позицію в масиві елементів меню, на яку вставляється новий пункт. Якщо значення параметра index виходить за преде-ли допустимого діапазону, наприклад, більше, ніж число піделементи модифікується пункту меню, то виникає виняткова ситуація.
Процедура Delete (index: integer) видаляє зазначений пункт меню. Якщо видаляється пункт має підпункти, то вони також видаляються.
Приклад. Видалення пункту меню.
procedure Forml.mnuItemDeleteClick (Sender: TSender);
if mnuFile.Items [2] .Caption = 'Другий елемент
then mnuFile.Delete (2); end;
Процедура виконує видалення пункту з підміню Файл. Видаляється пункт має заголовок Другий елемент і знаходиться на другій позиції. Попередньо-тельно проводиться перевірка, чи дійсно видаляється пункт з потрібним назвою.
Форма може мати більше одного головного меню. Це використовується, наприклад, в разі, коли одне з них містить заголовки англійською мовою, а інше - на російській. Для реалізації такої можливості на форму сліду-ет помістити два компонента MainMenu і підготувати відповідні ме-ню. Після цього при виконанні програми можливе підключення до форми будь-якого з цих меню. Для підключення до форми головного меню ис-користується властивість Menu форми.
Приклад. Перемикання між двома головними меню.
if Forml.Menu = EnglishMenu
then Forml.Menu: = RussianMenu else Forml.Menu: = EnglishMenu;
Меню мають назви EnglishMenu і RussianMenu. Код, що виконує пе-реключеніе меню, може бути включений до відповідного обробник.
Нагадаємо, що Menu є одним з властивостей форми, що вказує на головне меню, яке зараз є активним.