Методика проектирования меню и инструментальной панели
В Delphi меню создаются компонентами MainMenu — главное меню, и PopupMenu — всплывающее меню. Оба компонента расположены на странице Standard. Ниже рассмотрены основные этапы разработки полноценного меню.
1. Создайте новый проект и откройте главную форму будущего приложения.
2. Перенесите на форму компонент ImageList — список изображений для команд меню и кнопок инструментальной панели (страница Win 32).
3. С помощью редактора списка изображений (рис. 4), вызываемого двойным щелчком на ImageList, заполните список изображениями, символизирующими основные команды и кнопки панели инструментов будущего меню.
Рис. 4
Изображение добавляется в список нажатием кнопки Add и последующим выбором файла изображения. С Delphi поставляется много изображений кнопок. Они расположены в каталоге \Images\Buttons, а сам каталог Images расположен в каталоге \program files\common files\borland shared. Размер всех изображений в списке должен быть одинаковым. При добавлении в список изображений для кнопок необходимо учесть, что они часто содержат не одно, а два и более изображений. В этих случаях при попытке добавить изображение задается вопрос: «Bitmap dimensions for ... are greater then imagelist dimensions. Separate into ... separate bitmaps?» (Размерность изображения ... больше размерности списка. Разделить на ... отдельные битовые матрицы?). На заданный вопрос надо отвечать положительно. Тогда загружаемая битовая матрица автоматически разделится на отдельные изображения и потом можно удалить те из них, которые не нужны, кнопкой Delete.
При выборе изображений можно ориентироваться по именам соответствующих файлов и пиктограммам, которые показываются в правой части окна выбора: Find.bmp – файл кнопки поиска, Font.bmp – файл кнопки выбора шрифта и т.д.
4. Перенесите на форму со страницы Dialogs компоненты стандартных диалогов типа «Открыть файл» (компонент OpenDialog), «Сохранить файл как» (компонент SaveDialog), «Шрифт» (компонент FontDialog) и другие компоненты, с которыми будут выполняться операции в разрабатываемом приложении. Разместите на форме компонент RichEdit (страница Win32) многострочного окна редактирования и компонент MainMenu (главное меню) со страницы Standard.
5. Свяжите компонент MainMenu со списком изображений, полученным в п. 3, установив для компонента MainMenu свойство Images равным ImageList1 — имени компонента ImageList. Вызовите редактор меню (рис. 5), сделав двойной щелчок на MainMenu. В пунктирной рамке задайте заголовок первого пункта меню, в соседней рамке — второго и т.п. Для этого после щелчка по рамке следует перейти в Инспектор Объектов и в нем задать значение свойства Caption как имя пункта меню.
Щелкнув на заголовке одного из пунктов меню, вы получите доступ к вводу команд данного пункта. Выделите очередную пунктирную рамку в списке команд пункта и в Инспекторе Объектов задайте имя команды как значение свойства Caption. Повторите те же действия для других команд и пунктов.
Рис. 5 и 6
Для удаления названий команд или пунктов меню можно использовать команду Delete контекстного меню (рис. 6), которое открывается на выделенном пункте меню или на строке с названием команды.
В названиях пунктов меню или команд можно указать символ «&» перед тем символом, который определит клавиши быстрого выбора пункта или команды. Например, на рис. 5 показан пункт Файл, который можно выбрать сочетанием клавиш Alt+Ф. При создании меню имя этого пункта в строке Caption Инспектора Объектов была таким: &Файл.
Если нужно вставить разделительную черту, отделяющую группы команд друг от друга, следует очередной элемент меню ввести с именем «-».
Для задания «горячих клавиш» командам меню в Инспекторе Объектов назначается одно из значений свойства ShortCut.
Для создания разветвленных меню, т.е. таких, у которых подпункты вызывают новые списки команд, следует щелкнуть по названию подпункта и нажать комбинацию клавиш Ctrl+Bnpaвo, где Вправо - клавиша смешения курсора вправо. Такого же эффекта можно добиться после щелчка правой кнопкой мыши на подпункте и выбора команды Create Submenu из открывшегося контекстного меню (рис. 6).
Для элемента меню определено единственное событие ОnСliск, которое возникает при щелчке по названию команды или при нажатии Enter, если в этот момент строка с данной командой была выбрана (подсвечена). Обработчик события становится доступен после двойного щелчка по строке с названием команды в окне конструктора меню.
6. Рассмотрим процедуру создания панели инструментов для приложения. Установите на форму компонент ControlBar с вкладки Additional, и измените его свойство Align на alTop, чтобы растянуть компонент вдоль верхней кромки окна, а свойству AutoSize задайте значение true.
Компонент ControlBar целесообразно использовать потому, что на нем удобно располагать панели инструментов. Они автоматически становятся перемещаемыми внутри ControlBar. Это значит, что панели можно будет двигать по своему усмотрению. Если свойство AutoSize равно true, то компонент будет автоматически растягиваться и сужаться, когда возникнет необходимость выстраивать все панели в одну строку или в столбик.
Установите на компонент ControlBar одну панель ToolBar с вкладки Win32 и измените его свойство EdgeBorders. Для этого дважды щелкните левой кнопкой мыши по свойству EdgeBorders и задайте свойству еbТор значение false. Это заставит исчезнуть оборку сверху панели.
Желательно также сразу изменить здесь и свойство AutoSize на true, чтобы панель принимала размеры, соответствующие кнопкам.
Для создания кнопки на панели щелкните по ней правой кнопкой мыши и выберите из появившегося контекстного меню (рис. 7) пункт New Button.
Рис. 7
Пункт New Separator этого же меню создает разделитель между кнопками. Если нужно удалить кнопку или разделитель, то после их выделения на клавиатуре нажимается клавиша <Del>. Чтобы кнопки на панели выглядели более изящно (плоско), выделите панель и измените свойство Flat на true.
Для того чтобы нанести на кнопки какие-либо изображения, следует выделить панель и связать ее со списком изображений, полученным в п. 3, установив для панели свойство Images равным ImageList1. На кнопках сразу же отобразятся картинки в той последовательности, в которой они добавлялись в список рис.4. Если нужно изменить картинку на какой-нибудь кнопке, надо выделить ее и изменить свойство ImageIndex.
Для каждой кнопки в свойстве Caption следует ввести название кнопки - осмысленный текст, который бы по возможности соответствовал изображению на картинке. Чтобы панель отображала на кнопках не только картинки, но и их названия, нужно установить значение true в свойстве ShowCaptions у панели инструментов. Если еще установить свойство List у панели инструментов, то текст будет отображаться справа от картинки.
Для создания обработчика события для какой-нибудь из кнопок выполняется двойной щелчок по изображению кнопки и в открывшемся окне редактора вводится текст процедуры.
7. Если необходимо обеспечить в приложении контекстные всплывающие меню, то на форму нужно перенести один или несколько (по числу различных контекстных меню) компонентов PopupMenu со страницы Standard. Свяжите их с компонентом ImageList, задав соответствующее значение для свойства Images. Затем двойным щелчком на PopupMenu нужно открыть тот же редактор меню, что и в случае MainMenu. Команды контекстного меню проектируются точно так же, как и команды главного меню.
Когда контекстное меню сформировано, для привязки его к необходимому компоненту этот компонент выделяется на форме и в Инспекторе Объектов его свойство PopupMenu задается равным имени компонента соответствующего PopupMenu.
8. Созданное меню можно сохранить как шаблон для использования в других приложениях. Для этого в редакторе меню следует выбрать из контекстного меню (рис.6) команду Save As Template. Эта команда вызывает диалоговое окно, представленное на рис. 8.
Рис. 8
В этом окне в верхней строке можно указать описание (заголовок), под которым будет сохраняться новое меню. Впоследствии в любом другом приложении можно загрузить этот шаблон в меню, выбирая из контекстного меню в окне конструктора меню команду Insert From Template. Для удаления не используемых в данном приложении команд или пунктов меню они выделяются и нажимается клавиша Del.
Опубликовал Kest
December 22 2009 22:41:06 ·
0 Комментариев ·
9039 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.