Меню в программах на Delphi

Меню является важнейшими элементами управления пользовательского интерфейса любого приложения. Кроме того, коснемся механизма действий, позволяющего синхронизировать совместную работу различных элементов управления.

Практически все Windows-приложения имеют меню, которое является распространенным элементом пользовательского интерфейса. Меню представляет собой список объединенных по функциональному признаку пунктов, каждый из которых обозначает команду или вложенное меню (подменю). Выбор пункта меню равносилен выполнению соответствующей команды или раскрытию подменю.



Обычно в приложении имеется главное меню и несколько контекстных (всплывающих или локальных) меню. Главное меню предназначено для управления работой всего приложения, каждое из контекстных меню служит для управления отдельным интерфейсным элементом.

Пункт меню или подменю представляет собой объект типа TMenuItem. Отдельный пункт меню (подменю) обычно виден как текстовый заголовок, описывающий назначение пункта меню. Пункт меню может быть выделен (маркирован) для указания включенного состояния. Класс TMenuItem служит для представления пунктов главного и контекстных меню.

Cвойства пункта меню:

Bitmap типа TBitmap (значок, размещаемый слева от заголовка пункта меню). По умолчанию свойство имеет значение Nil, и значок отсутствует;

Break типа TmenuBreak (признак разделения меню на столбцы). Свойство Break может принимать одно из трех значений:

  • mbNone (не разделяется) — по умолчанию;
  • mbBreak (пункты меню, начиная с текущего, образуют новый столбец);
  • mbBreakBar (пункты меню, начиная с текущего, образуют новый столбец, отделенный линией);

Caption типа String (строка текста, отображаемая как заголовок пункта меню). Если в качестве заголовка указать символ «-», то на месте соответствующего пункта меню отображается разделительная линия. При этом, несмотря на отображение линии, свойство Caption попрежнему имеет значение «-»;

Checked типа Boolean (признак того, помечен пункт или нет). Если свойство установлено в значение True, то пункт помечен, и в его заголовке появляется специальная отметка. По умолчанию свойство Checked имеет значение False, и пункт меню не имеет отметки;

AutoCheck типа Boolean (признак автоматического изменения значения свойства Checked на противоположное при выборе пользователем пункта меню);

Count типа Integer (количество подпунктов в данном пункте меню). Это свойство есть у каждого пункта меню. Если какой-либо пункт не содержит подпунктов, то свойство Count имеет нулевое значение;

Enabled типа Boolean (признак активности пункта, т. е. будет ли он реагировать на события от клавиатуры и мыши). Если свойство Enabled установить в значение False, то пункт меню будет неактивным, и его заголовок становится бледным. По умолчанию свойство Enabled имеет значение True, и пункт меню активен;

Items типа TMenuItems (массив подпунктов текущего пункта меню). У каждого пункта меню, имеющего вложенное меню (подменю), пункты этого подменю перечислены в свойстве Items. Это свойство позволяет получить доступ к пунктам подменю по их позициям в массиве: items [0], items [1] и т. д.;

RadioItem типа Boolean (вид отметки, появляющейся в заголовке пункта). Если свойство установлено в значение False (по умолчанию), то в качестве отметки используется значок «галочка», в противном случае пункт отмечается жирной точкой;

Shortcut типа TSortcut (комбинация клавиш для активизации пункта меню). Определить комбинации клавиш можно также с помощью свойства Caption, но свойство Shortcut предоставляет для этого более широкие возможности. Обозначение комбинаций клавиш, установленных через свойство Shortcut, появляется справа от заголовка элемента меню. Наиболее просто задать комбинацию клавиш при конструировании в окне Инспектора объектов, выбрав нужную комбинацию в предлагаемом списке. Кроме того, назначить комбинации клавиш можно с помощью одноименной функции Shortcut (Key: Word; Shift: TShiftState) : TShortCut. Параметр Shift определяет управляющую клавишу, удерживаемую при нажатии алфавитно-цифровой клавиши, указанной параметром Key. Если в процессе выполнения программы, например, для пункта меню mnuTest требуется задать комбинацию клавиш <Alt>+<T>, то это можно выполнить так:

  1. mnuTest.Shortcut := Shortcut(Word'T'), [ssAlt]);

Visible типа Boolean (признак видимости пункта на экране). Если свойство Visible установлено в значение False, то пункт меню на экране не отображается. По умолчанию свойство Visible имеет значение True, и пункт виден в меню.

На скриншоте выше приведен пример меню Menul (подменю главного меню), разделенного на два столбца. У пункта Открыть этого меню свойство Break имеет значение mbBarBreak, у пункта Открыть как... свойство Break— значение mbBarBreak, для Закрыть как... свойству Break установлено значение mbNone.

Основным событием, связанным с пунктом меню, является событие OnClick, возникающее при выборе пункта с помощью клавиатуры или мыши. В приложении для генерации события OnClick или для имитации выбора пункта меню можно использовать метод Click. Вызов этой процедуры эквивалентен выбору соответствующего пункта меню пользователем.

  1. procedure TForm1.Button1Click (Sender: TObject) ;
  2. begin
  3. mnuLockItem.Click;
  4. end;

Нажатие кнопки Button1 приводит к тому же эффекту, что и выбор пункта меню mnuLockltem.

Для создания меню (как подменю главного меню) или контекстного меню при разработке приложения используется Конструктор меню. Меню также можно создавать или изменять динамически — непосредственно в ходе выполнения приложения.

Метки: ,
Если Вам интересна эта запись, Вы можете следить за ее обсуждением, подписавшись на RSS 2.0 .

Оставить комментарий или два

*