![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Главное меню – компонент TMainMenu
Про возможности главного меню мы уже практически все знаем. Класс TMainMenu построен на основе TMenu и состоит из элементарных пунктов меню TMenuItem. Чтобы завершить картину, познакомимся с полезной особенностью главного меню – механизмом объединения. Объединение меню применяется: 1. При работе с приложениями с интерфейсом MDI (см. главу 9 «Форма, интерфейсы SDI и MDI»). 2. При разработке приложения, обладающего несколькими окнами со свои- ми меню. 3. При внедрении OLE-объектов (например, с применением компонента TOleConteiner). В этом случае при старте сервера автоматизации последний вставляет свои элементы меню в главное меню приложения. Последовательно рассмотрим все три направления использования механизма слияния меню. Первый случай – отображение в главном меню главной формы приложения MDI пунктов меню с названиями открытых дочерних окон. По большому счету говорить об этой операции как о механизме объединения меню является некоторой натяжкой, но, с другой стороны, благодаря этой операции пользователь получает удобную возможность обращения к открытым дочерним окнам. Как ни странно это покажется на первый взгляд, но для решения этой задачи надо воспользоваться не свойствами или методами класса TMainMenu, а свойством WindowMenu главной формы нашего проекта. Этим свойством определяется пункт меню TMenuItem (входящий в состав элементов главного меню), к которому будет «пристроен» список имен дочерних форм. Если разрабатываемое приложение строится на основе интерфейса SDI, то для автоматического присоединения меню подчиненной формы к меню главной формы проверьте, чтобы свойство AutoMerge главного меню подчиненной формы было установлено в true: property AutoMerge: Boolean; Свойству AutoMerge компонента TMainMenu главной формы проекта всегда должно быть присвоено значение False. Если требуется полностью контролировать процесс слияния меню, то вместо услуг свойства AutoMerge стоит обратиться к методам: procedure Merge(Menu: TMainMenu); procedure Unmerge(Menu: TMainMenu);
Эти процедуры предназначены для присоединения и отсоединения пунктов меню из текста программы. В параметре Menu следует передавать ссылку на главное меню проекта. Если в приложении используется контейнер OLE-объектов – компонент TOLEContainer, то стоит знать о существовании трех методов главного меню, обеспечивающих слияние меню приложения и сервера OLE: procedure GetOle2AcceleratorTable(var AccelTable: HAccel; var AccelCount: Integer; const Groups: array of Integer); procedure PopulateOle2Menu(SharedMenu: HMenu; const Groups: array of Integer; var Widths: array of Longint);
Для осуществления временной замены главного меню на меню сервера OLE вызывают процедуру: procedure SetOle2MenuHandle(Handle: HMENU);
В качестве параметра Handle выступает указатель на меню сервера. Для восстановления оригинального меню вместо указателя передают нулевое значение.
|