Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Создание элементов меню во время выполнения программы






 

Как и все компоненты коллекции VCL, пункт меню вооружен своим конструктором и деструктором. Эти методы выполняют задачи по созданию и уничтожению элемента меню:

constructor Create(AOwner: TComponent); override;

destructor Destroy; override;

 

При создании нового экземпляра класса TMenuItem конструктор делает пункт меню видимым (Visible=true) и включенным (Enabled=True). В качестве владельца (AOwner) нового элемента TMenuItem следует назначать пункт меню, к которому мы рассчитываем подключить новый элемент. Операция присоединения нового пункта меню осуществляется одной из следующих функций:

procedure Add(Item: TMenuItem); overload;

procedure Add(const AItems: array of TMenuItem); overload;

procedure Insert(Index: Integer; Item: TMenuItem);

 

Первые два метода перегружаемые и поэтому называются одинаково – Add().

Разница между ними в том, что первый добавляет только один элемент Item,

а второй способен подключить целый массив пунктов меню AItems. Если методы Add() присоединяют новые пункты меню к концу списка, то метод Insert() вставит новый пункт меню Item в позицию, определяемую параметром Index.

В качестве индексов группировки старайтесь не использовать значения 1, 3 и 5. Эти значения применяются при слиянии меню приложения и серверов OLE-объектов. Впрочем, если в приложении не планируется работа с OLE, то можно не обращать внимания на это ограничение. Подробнее о технологии OLE 2.0 мы поговорим в главе 26 «Связывание и внедрение объектов – технология OLE».

Допустим, что в нашем проекте существует некий пункт меню с именем miMenuItem. Тогда простейший пример создания нового пункта меню и присоединения его к пункту miMenuItem программным способом будет выглядеть примерно так:

procedure TForm1.miFileClick(Sender: TObject);

var mi: TMenuItem;

Begin

mi: =TMenuItem.Create(miMenuItem); //создание нового пункта меню mi

mi.Caption: ='Новый пункт меню'; //назначение заголовка этому пункту

miMenuItem.Add(mi); //присоединение нового пункта меню к miMenuItem

end;

 

А теперь реализуем пример посложнее. Наше приложение будет создавать

три новых пункта меню и назначать им обработчики события OnClick(). Начните новый пустой проект и разместите на нем всего один компонент – главное меню. В свою очередь в главном меню определите один-единственный пункт меню с именем miMenuItem. В секции частных объявлений проекта (private) опишите процедуру NewMenuClick(). Она будет выполнять роль обработчика события OnClick() для новых пунктов меню. Сами пункты меню создаются при вызове процедуры OnCreate() главной формы проекта. Все остальное вы найдете в следующем листинге:

unit Unit1;






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.