Главная » Уроки по ООП » Урок 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). Для того, чтобы создать пункты в меню, необходимо щелкнуть по меню и после этого нажимать кнопку «Создать».

 

Составитель: Салий Н.А.

Яндекс.Метрика
Сайт создан в системе uCoz