186______________________________________________Глава 3

свойство Radioltem установлено в true в разделах Шаблон 1 и Шаблон 2, имеющих
одинаковое значение Grouplndex). Если вы зададите программно в одном из этих
разделов Checked = true, то в остальных разделах Checked автоматически сбросит-
ся в false. Впрочем, установка Checked = true лежит на программе; эта установка
может выполняться аналогично приведенному выше оператору.

Описанные маркеры флажков в режиме радиокнопок и в обычном режиме ис-
пользуются для разделов меню, представляющих собой различные опции, взаимо-
исключающие или совместимые.

Для каждого раздела могут быть установлены во время проектирования или
программно во время выполнения свойства Enabled (доступен) и Visible (види-
мый). Если установить Enabled = false, то раздел будет изображаться серой надпи-
сью и не будет реагировать на щелчок пользователя. Если же задать Visible = fal-
se, то раздел вообще не будет виден, а остальные разделы сомкнутся, заняв место
невидимого. Свойства Enabled и Visible используются для того, чтобы изменять
состав доступных пользователю разделов в зависимости от режима работы прило-
жения.

В C++Builder 4 предусмотрена возможность ввода в разделы меню изображе-
ний. За это ответственны свойства разделов Bitmap и Imagelndex. Первое из них
позволяет непосредственно ввести изображение в раздел, выбрав его из указанного
вами файла. Второе позволяет указать индекс изображения, хранящегося во внеш-
нем компоненте .ImageList (см. раздел 3.7.3). Указание на этот компонент вы мо-
жете задать в свойстве Images компонента MainMenu. Индексы начинаются с 0.
Если вы укажете индекс -1 (значение по умолчанию), изображения не будет.

Мы рассмотрели все основные свойства объектов, соответствующих разделам
меню. Основное событие раздела — OnClick, возникающее при щелчке пользовате-
ля на разделе или при нажатии «горячих» клавиш быстрого доступа.

Рассмотрим теперь вопросы объединения главных меню вторичных форм с
меню главной формы. Речь идет о приложениях с несколькими формами, в кото-
рых и главная, и вспомогательные формы имеют свои главные меню — компонен-
ты MainMenu. Конечно, пользователю неудобно работать одновременно с несколь-
кими окнами, каждое из которых имеет свое меню. Обычно надо, чтобы эти меню
сливались в одно меню главной формы.

Приложения с несколькими формами могут быть двух видов: приложения с
интерфейсом множества документов — так называемые MDI приложения, и обыч-
ные приложения с главной и вспомогательными формами. Подробнее это рассмот-
рено в разделах 4.1.2 и 4.7.5. Сейчас нас интересует только один вопрос: как объе-
диняются меню различнык,форм. В MDI приложениях меню дочерних форм всегда
объединяются с меню родительской формы. А в приложениях с несколькими фор-
мами наличие или отсутствие объединение определяется свойством AutoMerge
компонентов TMainMenu. Если требуется, чтобы меню вторичных форм объединя-
лись с меню главной формы, то в каждой такой вторичной форме ^надо установить
AutoMerge в true. При этом свойство главной формы должно оставаться в false.

Способ объединения меню определяется свойством разделов Grouplndex. Пс
умолчанию все разделы меню имеют одинаковое значение Grouplndex, равное
нулю. Если требуется объединение меню, то разделам надо задать неубывающие но
мера свойств Grouplndex. Тогда, если разделы встраиваемого меню имеют те ж(
значения, что и какие-то разделы меню основной формы, то эти разделы заменяю'
соответствующие разделы основного меню. В противном случае разделы вспомогате
льного меню встраиваются между элементами основного меню в соответствии с но
мерами Grouplndex. Если встраиваемый раздел имеет Grouplndex меньший, че1
любой из разделов основного меню, то разделы встраиваются в начало.

Пусть, например, в основной и вторичной формах структуры меню имеет слс
дующие значения Grouplndex: