Введение в программирование

       

Класс TMenuItem


Класс TMenuItem реализует поведение пунктов меню. Контейнером для объектов типа TMenuItem может быть компонент типа TMainMenu (линейка главного меню) или компонент типа TPopupMenu (контекстное меню).

При создании меню на этапе проектирования редактор меню Menu Designer автоматически создает объекты типа TMenuItem для каждой команды меню.

Класс предоставляет набор свойств, включая следующие:

  • Action - определяет объект действие (Action), ассоциируемый с пунктом меню. По умолчанию для каждого пункта меню стандартным событием считается OnClick и обработчиком события является процедура, имя которой автоматически формируется из имени формы и имени объекта "пункт меню", указанных через точку (например, TForm1.item12Click). Объект "действие" позволяет определить одну процедуру обработки события, которую далее можно будет многократно использовать для различных объектов при обработке событий.
  • AutoHotkeys - определяет, будут ли клавиши-акселераторы для элементов подменю устанавливаться автоматически.
  • Bitmap - определяет изображение, отображаемое слева от заголовка меню.
  • Break - определяет, будет ли пункт меню располагаться в новом столбце меню.
  • Caption - определяет текст пункта меню. Если перед буквой в заголовке пункта меню стоит символ &, то данная буква называется клавишей-акселератором, а выбор пункта меню может быть выполнен одновременным нажатием Alt и клавиши-акселератора.
  • Checked - определяет, будет ли маркер переключателя появляться в пункте меню слева от заголовка.
  • Default - определяет, является ли данный пункт меню пунктом, выполняемым по умолчанию при двойном щелчке мышью на родительском подменю. Пункт меню, выполняемый по умолчанию, отмечается полужирным начертанием.
  • Enabled - определяет, доступен ли пункт меню.
  • GroupIndex - указывает логическую группу, к которой принадлежит пункт меню (группы используются для управления слиянием пунктов меню).

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


Если значение свойстваGroupIndex - добавляемого меню совпадает со значением свойства GroupIndex - пункта главного меню, то последний заменяется на добавляемый. Если несколько пунктов меню главного окна имеет одинаковое значение свойства GroupIndex -, то и заменены они могут быть только несколькими пунктами добавляемого меню: первый пункт с одинаковым значением заменяется на первый добавляемый пункт с одинаковым значением, второй - на второй и т.д.

Если значение свойства GroupIndex добавляемого пункта линейки меню лежит между значениями свойства GroupIndex пунктов линейки меню главного окна, то добавляемый пункт вставляется между ними.

  • HelpContext - указывает ID контекста справки, отображаемой для пункта меню.
  • Hint - определяет текст всплывающего окна подсказки.
  • ImageIndex - определяет индекс изображения, отображаемого для пункта меню. Список изображений, указываемых через индекс, содержится в свойстве Images родительского меню: для пунктов меню верхнего уровня список определяется свойством Images объекта типа TMenu или TPopupMenu, а для пунктов подменю список определяется свойством Images родительского объекта меню типа TMenuItem. Если родительское меню не содержит списка изображений в свойстве Images, то для определения отображаемого изображения будет использовано значение свойства Bitmap пункта меню.
  • Items - список пунктов меню в подменю.
  • MenuIndex - указывает индекс пункта меню в родительском меню.
  • Parent - определяет для пункта меню его родительское меню.
  • Visible - определяет, является ли пункт меню видимым.


Класс предоставляет набор методов, включая следующие:

  • Add - добавляют в конец списка Items один или несколько пунктов меню.

    Например:

    var NewItem: TMenuItem; i : integer; begin // Создание элемента "разделительная линия": NewItem := TMenuItem.Create(Self); NewItem.Caption := '-'; // Заголовок пункта меню // Добавление пункта меню к меню Windows: Windows.Add(NewItem); // Cоздадим и добавим пункт меню для каждой формы for i := 0 to Screen.FormCount-1 do begin NewItem := TMenuItem.Create(Self); NewItem.Caption := Screen.Forms[i].Name; Windows.Add(NewItem); end; end;
  • Clear - удаляет все пункты меню, указанные в списке свойства Items.
  • Click - инициирует событие OnClick.


    Этот метод может быть переопределен разработчиком для того, чтобы запрограммировать собственный ответ на выбор пользователем пункта меню.
  • Create - создает новый пункт меню.
  • Delete - удаляет из списка свойства Items пункт меню с указанным индексом.
  • IndexOf - возвращает позицию указанного пункта меню в списке Items.
  • Insert - вставляет указанный пункт меню в заданную позицию списка Items.


Разработчик может создать один общий объект "действие" и для пункта меню, и для кнопки панели инструментов. Для определения действия на этапе проектирования следует:

  1. добавить в форму объект типа TactionList;
  2. вызвать редактор объекта "действие", выполнив на нем двойной щелчок мышью;
  3. добавить в открывшемся редакторе объекты "действие (типа TAction)";
  4. по двойному щелчку на имени любого объекта "действие" отображается редактор кода с автоматически добавленным обработчиком события для данного действия. Например: procedure TForm1.Action1Execute(Sender: TObject); begin end; Внутри блока begin end следует ввести код обработчика события;
  5. в завершение нужно определить для объекта "пункт меню" значение свойства Action, выбрав его из списка действий объекта типа TActionList.



Содержание раздела