§ 20. Создание приложений

20.2. Создание меню

Практически любое приложение должно иметь меню, которое дает удобный доступ к функциям программы. Существует несколько типов меню:

  • главное меню с выпадающими списками разделов;
  • каскадные меню, в которых разделу первичного меню ставится в соответствие список подразделов;
  •  контекстные меню, появляющиеся при нажатии правой клавишей мыши на объекте.

В Delphi меню создаются компонентами  MainMenu (главное меню) и PopupMenu  (контекстное меню), расположенными на панели Standard. На форме компоненты можно размещать в любом месте, во время выполнения программы сами компоненты не видны (пример 20.2). На этапе выполнения программы главное меню будет помещено на свое стандартное место — наверху формы, контекстное меню появится только после нажатия правой кнопки мыши по тому компоненту, к которому оно относится.

Для добавления новых пунктов меню нужно сделать двойной щелчок на MainMenu1 или нажать на кнопку  около свойства Items в окне инспектора объектов. Откроется окно редактора меню (пример 20.3). Каждый пункт меню является отдельным объектом. Названия пунктов меню прописываются в свойстве Caption в окне инспектора объектов. Созданием пунктов меню можно управлять из контекстного меню (пример 20.4). Пункт Create Submenu позволяет создавать каскадные меню. Структуру меню можно увидеть в окне Structure (пример 20.5).

Для каждого пункта меню основным событием является событие OnClick.

Создание контекстных меню аналогично созданию главного меню. Пункты меню добавляются в окне редактора меню. Для того, чтобы при щелчке правой кнопкой мыши на некотором компоненте появлялось контекстное меню, нужно написать имя контекстного меню в свойстве PopupMenu для выбранного компонента (пример 20.6)

Пример 20.2. Меню на форме:

Пример 20.3. Редактор меню:

Если в качестве значения свойства Caption ввести «—», то вместо пункта меню появится разделитель.

Пример 20.4. Контекстное меню редактора:

Пример 20.5. Структура меню:

Пример 20.6. Контекстное меню для компонента Button1:

Написание обработчиков для меню и диалогов будет рассмотрено в следующих пунктах.