Главная » Уроки по ООП » Урок 22. Создание приложений с невизуальными компонентами и меню |
ДОПОЛНИТЕЛЬНЫЕ ЗАДАНИЯ |
Урок 22. Создание приложений с невизуальными компонентами и меню
Задание 1. Создать программу калькулятор, с использованием главного меню.
Рисунок 1.
Динамическое создание меню
Методы класса TMenuItem обычно используются для динамического формирования меню:
procedure Add(Item: TMenuItem) |
добавляет в конец меню новую команду; |
procedure Clear |
удаляет все вложенные пункты меню и освобождает память; |
function Find(ACaption: string): TMenuItem |
возвращает указатель на пункт меню найденный по заданному параметру ACaption (тексту команды), в противном случае, возвращает nil; |
function IndexOf(Item: TMenuItem): Integer |
возвращает порядковый номер элемента меню; |
procedure Insert(Index: Integer; Item: TMenuItem) |
добавляет в меню с позиции Index пункт Item; |
function Isline: Boolean |
определяет, является ли пункт меню разделителем; |
procedure Remove (Item: TMenuItem) |
удаляет указанный пункт меню. |
Задание 3. Динамическое управление меню
Создайте форму (рис.7).
Рисунок 7.
В раздел public модуля занесите переменную и три метода:
ActiveItem: TMenuItem; //переменную для хранения активного (выделенного) пункта меню
function GetCommand(Item: TMenuItem): String; //рекурсивный метод получения полного имени команды;
procedure ActivationItem(Item: TMenuItem); //методвыделения (активации) пунктаменю;
procedure ItemClick(Sender: TObject); //обработчиксобытиякликапопунктуменю. Данный обработчик общий для всех команд меню, он делает активным нажатый пункт.
Установите курсор на один из методов и нажмите Ctrl+Shift+C. В результате в разделе реализации появятся заголовки реализации этих методов (процедуры и функции).
Напишете код реализации методов:
GetCommand:
if Assigned(Item.Parent) then
Result:= GetCommand(Item.Parent)+’ – ‘+Item.Caption;
ActivationItem:
ActiveItem:= Item;
Caption:= ‘Выбранакоманда:’ + GetCommand(Item);
ItemClick:
ActivationItem(TMenuItem(Sender)); // Получаем нажатыйпунктменюч/з Sender
Создайте обработчики события OnClick кнопок.
«Создать»:
var NewItem: TMenuItem;
Index: Integer;
begin
NewItem:= TMenuItem.Create(Self);// Создаемновыйпунктменю
NewItem.Caption:= Edit1.Text; // Присваиваемнадписьпункту
NewItem.OnClick:= ItemClick; // Присваиваемметод-обработчиксобытия
Index:= StrToIntDef(Edit2.Text, 0);// Определяем положение создаваемого пункта
ActiveItem.Insert(Index, NewItem);// Вставляем созданный пункт в подменю ActiveItem
end;
«Удалить»:
var Item: TMenuItem;
begin
if Assigned(ActiveItem.Parent) then // существуетлиродитель?
begin // Если существует, то
Item:= ActiveItem.Parent; // Получаем родителя пункта
Item.Remove(ActiveItem); // Удаляем пункт родителя
ActivationItem(Item); // Делаемродителяактивным
end;
end;
«Главный раздел»:
ActivationItem (MainMenu1.Items); //Выделяем главный раздел меню
Выделите форму, и на вкладке Events окна Object Inspector выберите событие OnCreate. В раскрывающемся списке события выберите ранее созданный обработчик Button1Click (кнопка «Главный раздел»).
Выполните компиляцию и тестирование программы (индексы меню указывайте начиная с 0). Для того, чтобы создать пункты в меню, необходимо щелкнуть по меню и после этого нажимать кнопку «Создать».
Составитель: Салий Н.А.