Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
delphi.pdf
Скачиваний:
191
Добавлен:
24.02.2016
Размер:
6.84 Mб
Скачать

Рисунок 8.6. Контекстные команды в дизайнере меню

Команда

Insert

Delete

Create Submenu Select Menu Save As Template

Insert From Template

Delete Templates

Insert From Resource

Описание

Вставляет новый пункт. Удаляет выбранный пункт.

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

Вставляет меню из списка шаблонов.

Удаляет шаблон(ы) меню.

Вставляет меню из файла с описанием меню (расширение MNU) или из стандартного файла ресурсов (расширение RC).

Таблица 8.2. Контекстные команды в дизайнере меню

Бывает, создав меню, вы вдруг обнаруживаете, что какой-то незадачливый пункт находится не на своем месте. Проблема решается просто: захватите пункт меню щелчком левой кнопки мыши и, удерживая нажатой кнопку мыши, отбуксируйте его к новой позиции. Таким образом, можно переместить не только отдельный пункт, но и целое подчиненное меню со всеми его пунктами и вложенными меню.

8.1.4. Пункты меню

Нетрудно догадаться, что пункты меню, как и все элементы интерфейса, являются компонентами. Класс пункта меню называется TMenuItem, самые характерные его свойства обозначены в таблице 8.3.

340

Свойство

Action

AutoCheck

AutoHotkeys

AutoLineReduction

Bitmap

Break

Caption

Checked

Default

Enabled

GroupIndex

Описание

Задает так называемую команду, которая будет выполняться при выборе данного пунтка меню. Весь список команд содержится в компоненте

ActionList (см. параграф 8.6).

Если равно значению True, то выбор пункта меню автоматически приводит к изменению значения свойства Checked на противоположное. Если равно значению False, то изменением свойства Checked управляет программист.

Значение maAutomatic избавляет программиста от необходимости назначать пункту меню "горячую" клавишу (с помощью специального символа & в тексте пункта); компонент автоматически подбирает "горячую" клавишу. Значение maManual требует, чтобы "горячую" клавишу назначил программист (см. параграф 8.1.3). Значение maParent показывает, что способ назначения горячей клавиши определяется "родительским" компонентом

MainMenu.

Если равно значению maAutomatic, то при отображении меню подряд идущие пункты-разделители рисуются как один разделитель, а пунктыразделители, находящиеся в начале или конце меню вообще не показываются. Свойство AutoLineReduction применяется при программном добавлении и удалении пунктов меню, чтобы избежать нежелательных явлений вроде повторяющихся и повисших разделительных линий. Если свойство AutoLineReduction равно значению maManual, то все пункты меню отображаются как есть. Если свойство равно значению maParent, то способ определяется “родительским” компонентом (например, MainMenu).

Значок, который отображается рядом с текстом пункта меню. Если для данного пункта меню указан индекс значка с помощью свойство ImageIndex, то значение свойства Bitmap игнорируется. Значки в пунктах меню более подробно расмотрены в параграфе 8.1.12.

Если равно mbBreak или mbBarBreak, то пункт меню начинает новый столбец. Значение mbBarBreak обеспечивает отделение нового столбца от предыдущего вертикальной чертой.

Текст пункта меню.

Если равно значению True, то пункт меню содержит метку в виде "птички".

Значение True говорит о том, что выбор пункта меню можно осуществить двойным щелчком "родительского" пункта меню.

Определяет, доступен ли пользователю данный пункт меню.

Работает по-разному в зависимости от того, находится пункт в подчиненном меню или в строке главного меню. Пункты подчиненного меню с одинаковым положительным значением GroupIndex согласовано переключают между собой метку — установка у одного пункта свойства Checked в значение True снимает метку с другого пункта.В MDI-формах свойство GroupIndex работает по-другому. Пункты главного меню, находящиеся в дочерней форме MDI, сливаются с пунктами главного меню обрамляющей формы MDI при активизации дочерней формы. При этом если в строке главного меню обрамляющей формы существуют пункты с таким же значением свойства GroupIndex, то новый пункт со своим списком пунктов полностью заменяет старый; в противном случае новый пункт со своим списком пунктов вставляется в строку главного меню. Более подробно слияние меню изложено

341

Hint

ImageIndex

в справочнике среды Delphi.

Краткая подсказка для пользователя, отображаемая в строке состояния.

Номер значка в списке Images компонента MainMenu. Значок отображается рядом с текстом пункта меню (см. параграф 8.1.12). Отрицательное значение свойства ImageIndex говорит о том, что для пункта меню значок не задан. Свойство ImageIndex имеет приоритет над свойством Bitmap.

RadioItem

Если равно значению True, то метка имеет вид жирной точки.

ShortCut

Комбинация клавиш для выполнения команды, не открывая меню.

 

Список значков, отображаемых рядом с пунктами подчиненного меню.

SubMenuImages

Свойство SubMenuImages используется совместно со свойством ImageIndex

 

компонентов MenuItem (см. параграф 8.1.12).

Visible

OnAdvancedDrawItem

OnClick

OnDrawItem

OnMeasureItem

Определяет, виден ли пользователю пункт меню.

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

Происходит при выборе пункта меню пользователем.

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

OwnerDraw.

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

Таблица 8.3. Важнейшие свойства и события компонента MenuItem

По аналогии с остальными классами компонентов можно было бы предположить, что в палитре компонентов существует компонент MenuItem. Однако его там нет, поскольку пункты меню не существуют сами по себе, а работают только в составе строки главного меню или окна контекстного меню. Тем не менее, они во многом ведут себя как настоящие компоненты, например, настраиваются в окне свойств и наряду с остальными компонентами помещаются в исходный текст формы в виде отдельных полей. Чтобы в этом убедиться, активизируйте редактор кода и найдите определение класса формы. Оно будет таким, как на рисунке 8.7.

342

Рисунок 8.7. Пункты меню в программном коде

8.1.5. Разделительные линии

Шаг 7. Логически связанные между собой команды принято отделять от других команд горизонтальной линией. Например, пункт Exit хорошо бы отделить от остальных (рисунок 8.8). Для этого вставьте новый пункт и запишите в значении свойства Caption символ минуса (–).

343

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]