Читайте также: |
|
Создание меню
Меню — это список действий, которые вы можете выбирать по своему желанию. Выбор пунктов меню принято осуществлять с помощью мыши.
Различают два типа меню:
· Главное меню формы
· Вспомогательные всплывающие меню
Главное меню расположено под заголовком формы. Выбор пункта главного меню вызывает появление на экране выпадающего меню. Выпадающее меню содержит пользовательские команды. Среди команд могут быть пункты, выбор которых приводит к появлению вложенных выпадающих меню. Уровень вложенности практически не ограничен.
Всплывающие меню не привязаны к главному меню и появляются, как правило, по щелчку правой кнопки мыши
Для главного и всплывающего меню C++Builder имеет два компонента: MainMenu и PopupMenu. Установка этих компонентов происходит одинаково, но результат будет разным. В первом случае мы получим стандартную строку главного меню, а во втором — окно всплывающего меню.
Шаг 1. Создайте новое приложение. Для этого выберите в меню File команду New Application. На экране появится чистая форма с заголовком Form1.
Шаг 2. Можете переименовать форму (свойство Name), например, назовите ее PictureForm. При этом одновременно изменитсясвойство Caption формы.
Шаг 3. Cохраните модуль главной формы и весь проект, выполнив команду меню
File | Save All. Модуль назовите Main.срр, а проект — PicView.bpr.
Отображение в форме главного меню обеспечивает компонент MainMenu, расположенный в палитре компонентв на странице Standard (рис.1):
|
|
имя MainMenu (значение свойства Name) (рис.2):
Cамые важные свойства компонента MainMenu следующие:
Таблица 1. Важнейшие свойства компонента MainMenu.
Свойство | Описание |
AutoMerge | Определяет, сливается ли главное меню вторичной формы с главным меню главной формы. Способ слияния определяется значением свойства GroupIndex каждого пункта меню верхнего уровня. |
Items | Обеспечивает доступ к пунктам меню верхнего уровня. |
Компонент MainMenu являетсяневизуальным, поэтому отображается на форме только своим значком, который виден только на этапе разработки.
Шаг 4. Добавление новых пунктов выполняется в окне дизайнера меню. Для вызова дизайнера меню щелкните правой кнопкой мыши на поле значка компонента MainMenu и ввсплывающем меню щелкните мышью на пункте Menu Desiner…
Появится окно дизайнера меню с заголовком PictureForm->MainMenu:
Дизайнер меню работает в паре с инспектором объектов. Управление пунктами меню, в частности их создание и удаление, осуществляется в окне дизайнера меню, а свойства каждого пункта, например его текст и клавиатурное сокращение, устанавливаются в инспекторе объектов.
Шаг 5. Пока строка главного меню состоит из одного безымянного пункта. Присвойте его свойству Name имя FileItem, а свойству Caption присвойте значение &File. Символ & обеспечивает подчеркивание следующего за ним символа при отображении текста, поэтому пункт меню будет виден как F ile. Подчеркнутая буква используется в комбинации с клавишей Alt для прямого доступа к пункту меню с клавиатуры. В данном случае активизация пункта F ile будет происходить по комбинации клавиш Alt+F. Щелкните на поле дизайнера меню. В пункте меню и в самой форме появится надпись F ile, а под пунктом F ile появится пустой пункт выпадающего меню (рис. 3).
Рис3
Шаг 6. Создайте под пунктом F ile выпадающее меню. Для этого щелкните на пустой ячейке — заготовка первого пункта выпадающего меню. Инспектор объектов настроится на новый пункт меню. Присвойте пункту имя OpenItem и в свойстве Caption впишите текст &Open... Вместо пустой ячейки появится текст O pen..., и пустая ячейка переместится ниже.
Шаг 7. Действуя по аналогии, добавьте еще три пункта: Save A s..., C lose и E x it (рис. 4).
Рис4
В программе они должны называться SaveAs1, Close1 и Exit1 соответственно.
Для создания сложного меню нужны средства вставки и удаления пунктов, создания вложенных меню и прочие. Поэтому в дизайнере меню для каждого пункта предусмотрено локальное меню с необходимым набором команд (см. таблицу 2), которое появляется при нажатии правой кнопки мыши.
Taблица 2. Команды управления пунктами в дизайнере меню.
Команда | Описание |
Insert Delete Create Submenu Select Menu Save As Template Insert From Template Delete Templates Insert From Resource | Вставляет в позиции курсора новый пункт. Удаляет пункт в позиции курсора. Создает в позиции пункта выпадающее меню. Предлагает выбрать для работы другой компонент меню. Сохраняет текущую структуру меню в списке шаблонов. Вставляет в позиции курсора меню, взятое из списка шаблонов. Удаляет шаблон(ы) меню. Вставляет в.позиции курсора меню, взятое из файла ресурсов. |
Если нужно поменять пункты меню местами, то захватите пункт меню щелчком мыши и, удерживая кнопку мыши нажатой, отбуксируйте его к новой позиции. Таким образом, можно переместить не только отдельный пункт, но и целое выпадающее меню со всеми его пунктами и вложенными меню. Например, переместите пункт Close на первое место:
Пункты меню
Пункты меню, как и все элементы интерфейса C++Builder, являются компонентами. Класс пункта меню называется TMenuItem. Его самые важные свойства приведены в таблице 3.
Таблица 3. Важнейшие свойства компонента Menultem.
Break Caption Checked Enabled Groupindex Hint Radioltem ShortCut Visible | Если равно mbBreak или mbBarBreak, то пункт мeню начииает новую колонку. Значение mbBarBreak обеспечивает отделение новой колонки от старой вертикальной чертой. Текст пункта меню. Если равно true, то пункт меню содержит метку: "галочку" или жирную точку в зaвиcимocти oт знaчeния cвoйcтвa RadioItem. Определяет, доступен ли пункт меню пользователю. Работает по-разному в зависимости оттого, находится пункт в выпадающем, меню или в строке главного меню. Пункты выпадающего меню с одинаковым положительным значением GroupIndex согласованно переключают "галочку" или жирную точку (вид метки определяется свойством. Radioltem). Пункты строки главного меню, находящиеся в дочерней форме MDI, сливаются с пунктами главного меню обрамляющей формы MDI при активизации дочерней формы. При этом если в строке главного меню обрамляющей формы существуют пункты с таким же значением свойства GroupIndex, тоновый пункт со своим списком пунктов полностью заменяет старый; в противном случае новый пункт со своим списком пунктов вставляется в строку главного меню. Более подробно слияние менюизложено в справочнике С++Builder Подсказка для пользователя, отображаемая в строке состояния. Если равно true, то метка пункта имеет вид жирной точки и несколько пунктов с одинаковым значением GroupIndex работают кaк зависимые переключатели — установка у одного пункта свойства Checked в true - снимает метку с другого пункта. Комбинация клавиш для выполнения команды, не открывая меню. Определяет, виден ли пункт меню пользователю. |
По аналогии с остальными классами компонентов можно было бы предположить, что в палитре компонентов существует компонент MenuItem. Однако его там нет, поскольку пункты меню не существуют сами по себе, а работают только в составе строки главного меню или окна всплывающего меню. Тем не менее, они во многом ведут себя как настоящие компоненты, например настраиваются в инспекторе объектов и наряду с остальными компонентами помещаются в исходный текст формы в виде отдельных полей. Чтобы в этом убедиться, активизируйте редактор кода и найдите определение класса формы заголовочном файле формы:
Шаг 8. Логически связанные между собой команды принято разделять горизонтальной линией. Например, пункт Exit хорошо бы отделить от остальных. Для этого вставьте новый пункт и запишите в значении свойства Caption символ минуса (-). C++Builder нарисует для пункта горизонтальную линию. После этого переместите пункт Exit за разделительную черту.
Знак минус при этом не запрещает создавать пункты, имена которых начинаются со знака минуса. Если вы запишете что-нибудь после этого знака, то в имени пункта отобразится весь введенный текст.
Клавиатурные сокращения
Некоторым пунктам меню принято назначать клавиатурные сокращения. Клавиатурное сокращение (shortcut) — это комбинация клавиш на клавиатуре, дублирующая команду меню. Например, в некоторых программах команде меню File | Exit назначается сокращение Alt+X. Текст сокращения отображается в названии пункта справа от него. Сокращения ускоряют работу с приложением.
Шаг 9. Чтобы назначить пункту сокращение, активизируйте его в дизайнере меню, переключитесь в инспектор объектов и выберите в значении свойства ShortCut требуемую комбинацию клавиш. Если ее там нет, то введите текст сокращения с клавиатуры (рис.).
Обратите внимание, что C++Builder не отслеживает дублирование одного и того же сокращения для нескольких пунктов меню, за этим должен следить программист.
Обработка команд меню
Например, реализуйте закрытие формы при выборе пункта меню Exit. При нажатии кнопки на любом пункте меню возникает событие OnClick. Пункту меню Exit соответствует компонента ExitItem. Поэтому при нажатии кнопки мыши на поле пункта меню Exit возникает событие OnClick длякомпонента ExitItem. Откликом на это событие должно быть закрытие формы вызовом метода Close() класса TPictureForm.
Шаг 10. Активизируйте в дизайнере меню пункт Exit и выберите в инспекторе объектов страницу Events. Щелкните двойным щелчком мыши на события OnClick.
В результате откроется редактор кода, в котором появится заготовка обработчика события. Обработка команды Exit сводится к вызову метода Close(), закрывающего форму (а заодно и приложение, поскольку это единственная форма):
Подключение меню к форме выполняется с помощью свойства формы Menu. Активизируйте форму и найдите свойство Menu в инспекторе объектов. Его поле уже с одержит имя меню MainMenu. Этого достаточно для работы меню.
Проверьте, работает ли меню. Откомпилируйте и запустите проект. На экране появится форма со строкой меню под заголовком. Выбор в меню любой команды, кроме Exit, безрезультатен. По команде Exit или комбинации клавиш Alt+X окно закроется и приложение завершится.
Пункты-переключатели
Команды меню могут вести себя как переключатели. Если пункт меню помечен «галочкой», то этот пункт включен и действия, связанные с этим пунктом, выполняются. Если «галочку» убрать, то пункт меню будет выключен. Например, реализуйте такой сценарий. Добавьте в главное меню еще один пункт View и в его выпадающем меню команду Toolbar. Если команда Toolbar выбрана, то в форме отображается панель инструментов и в названии пункта меню появляется метка, свидетельствующая о том, что режим включен. Если выбрать команду Toolbar еще раз, то панель инструментов убирается и метка исчезает.
Шаг 11. Для реализации такого переключения в строке главного меню создайте пункт View и для него в выпадающем меню с пункт с заголовком Toolbar и именем Toolbar1. Установите для этого пункта свойство Checked в значение true. Пункт станут помеченными
Шаг 12. В ответ на выбор пользователем пунктов Toolbar необходимо переключать метку. Для этого определите для пункта меню такой обработчик события OnClick:
void__fastcall TPictureForm::ToolbarItemClick
(TObject *Sender)
{
// Спрятагь или показать панель инсгруменчов
ToolBar1->Checked=!ToolBar1->Checked;
}
// -------------------------------------
Дата добавления: 2015-10-28; просмотров: 200 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Постановка задачи | | | Всплывающее меню |