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

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

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

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

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

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

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

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

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

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

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

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

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

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

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