Главное меню – компонент TMainMenu
Про возможности главного меню мы уже практически все знаем. Класс TMainMenu построен на основе TMenu и состоит из элементарных пунктов меню TMenuItem. Чтобы завершить картину, познакомимся с полезной особенностью главного меню – механизмом объединения. Объединение меню применяется:
1. При работе с приложениями с интерфейсом MDI (см. главу 9 «Форма, интерфейсы SDI и MDI»).
2. При разработке приложения, обладающего несколькими окнами со свои-
ми меню.
3. При внедрении OLE-объектов (например, с применением компонента
TOleConteiner). В этом случае при старте сервера автоматизации последний вставляет свои элементы меню в главное меню приложения.
Последовательно рассмотрим все три направления использования механизма слияния меню. Первый случай – отображение в главном меню главной
формы приложения MDI пунктов меню с названиями открытых дочерних
окон. По большому счету говорить об этой операции как о механизме объединения меню является некоторой натяжкой, но, с другой стороны, благодаря этой операции пользователь получает удобную возможность обращения к открытым дочерним окнам.
Как ни странно это покажется на первый взгляд, но для решения этой задачи
надо воспользоваться не свойствами или методами класса TMainMenu, а свойством WindowMenu главной формы нашего проекта. Этим свойством определяется пункт меню TMenuItem (входящий в состав элементов главного меню), к которому будет «пристроен» список имен дочерних форм.
Если разрабатываемое приложение строится на основе интерфейса SDI, то
для автоматического присоединения меню подчиненной формы к меню
главной формы проверьте, чтобы свойство AutoMerge главного меню подчиненной формы было установлено в true:
propertyAutoMerge: Boolean;
Свойству AutoMerge компонента TMainMenu главной формы проекта всегда должно быть присвоено значение False.
Если требуется полностью контролировать процесс слияния меню, то вместо
услуг свойства AutoMerge стоит обратиться к методам:
procedureMerge(Menu: TMainMenu);
procedureUnmerge(Menu: TMainMenu);
Эти процедуры предназначены для присоединения и отсоединения пунктов
меню из текста программы. В параметре Menu следует передавать ссылку
на главное меню проекта.
Если в приложении используется контейнер OLE-объектов – компонент
TOLEContainer, то стоит знать о существовании трех методов главного меню,
обеспечивающих слияние меню приложения и сервера OLE:
procedureGetOle2AcceleratorTable(varAccelTable: HAccel; varAccelCount: Integer; constGroups: array ofInteger);
procedurePopulateOle2Menu(SharedMenu: HMenu; constGroups: array ofInteger; varWidths: array ofLongint);
Для осуществления временной замены главного меню на меню сервера OLE
вызывают процедуру:
procedureSetOle2MenuHandle(Handle: HMENU);
В качестве параметра Handle выступает указатель на меню сервера. Для восстановления оригинального меню вместо указателя передают нулевое значение.
Дата добавления: 2016-03-15; просмотров: 824;