Создание всплывающего меню




Визуальное проектирование меню

 

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

В Delphi 5 используются два типа меню: главное меню (Main Menu) и всплывающее меню (PopupMenu).

 

Создание главного меню

Главное меню программы, обычно представленное полосой меню (menu bar) в верхней части формы, перечисляет основные категории выполняемых программой операций. При щелчке на каждом пункте главного меню появляется соответствующее подменю; оно исчезнет после осуществления выбора. Этот подход позволяет экономить пространство на форме.

Компонент MainMenu находится на странице Standard палитры компонентов - его пиктограмма выглядит как меню с вызванным подменю. При размещении MainMenu на форме моментального эффекта не последует. Но как только в этот компонент будет добавлен какой-нибудь пункт, главное меню сразу появится вдоль верхнего края формы. В период разработки меню можно вызвать подменю и, щелкнув на пункте подменю, перейти в обработчик события OnClick этого пункта.

Проиллюстрируем технологию построения меню.

Свойству Caption стартовой формы назначим значение «Создание главного меню».

Меню будет содержать пункты: File и Help.

Пункт File содержит подменю, состоящее из 5 пунктов: команды: Open, Save, Save As, Messages и Exit. Пункт Help содержат подменю, состоящее из пункта About.

После размещения компонента MainMenu на форме и двойного щелчка на нем, Delphi 5 активизирует окно Menu Designer (визуально-ориентированное средство создания меню) с заголовком Form1.MainMenu1.

Меню в программе можно создать только с помощью Menu Designer. Однако, после того как они созданы, для установки их свойств и событий можно использовать Object Inspector также, как и для обычных компонентов.

Создание меню в открывшемся окне начинается с ввода названия первого пункта (File) в полосе меню. Для этого свойству Caption задается название пункта меню &File и нажимается клавиша < Enter >. Последующие пункты главного меню можно ввести в пустом прямоугольнике, расположенном ближе к правому краю полосы меню. Пункты подменю вводятся в пустом прямоугольнике в нижней части активного подменю. Для этого полосу подсветки нужно переместить вниз, а свойству Caption задать название пункта подменю - &Open и нажать клавишу < Enter > (рис. 20).

Чтобы вставить сразу несколько пунктов подменю, следует щелкнуть на свойстве Caption в Object Inspector, щелкнуть на пустом прямоугольнике в нижней части подменю и ввести нужные заголовки. Каждый раз при нажатии < Enter > осуществляется переход к следующему пункту.

Примечание: символ амперсанд (&) в заголовке подчеркивает следующий за ним символ и превращает его в клавишу мнемонического доступа. Для пунктов главного меню клавишей доступа является < Alt > + <подчеркнутый символ>. Так для выбора пункта &File следует нажать <Alt+F>. Для выбора пункта подменю нажатие клавиши < Alt > необязательно. Например, для выбора пункта &Open можно просто нажать <Alt+F>,<O>. Все элементы главного меню должны иметь разные подчеркнутые символы. Это замечание касается и пунктов подменю. Однако, пункты разных подменю могут иметь одинаковые подчеркнутые буквы.

При необходимости объединить пункты подменю в смысловые группы, можно вставить разделительную линию (рис.20), добавив пункт подменю с символом дефис (-) в качестве заголовка.

Уже созданное меню можно изменить:

- для вставки нового пункта следует установить с помощью клавиш управления курсором полосу подсветки на пункте, перед которым осуществляется вставка (например, Messages) и нажать клавишу < Insert >. В результате появится пустая строка, а пункт Messages и все другие пункты, расположенные ниже него, опустятся на одну строку;

- для удаления пункта следует установить на нем полосу подсветки и нажать клавишу < Delete >. Когда удаляется пункт меню, удаляются и пункты его подменю;

- для перестроения порядка пунктов меню и подменю можно отбуксировать их мышью при нажатой левой кнопке к нужному месту. Для отметки более одного пункта следует производить указанные действия при нажатой клавише < Shift >.

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

 

Создание каскадного (вложенного) подменю справа от пункта подменю осуществляется нажатием клавиши < ® > при нажатой клавише < Ctrl >. Пункт подменю, вызывающей каскадное подменю, автоматически помечается символом похожим на клин рядом с именем пункта. Создадим каскадное подменю, состоящее из трех пунктов: Report1, Report2, Report3 для пункта Messages (рис. 20).

 
 

Добавление «горячих» клавиш. Постоянно доступный из любого места программы клавишный эквивалент пункта подменю определяет свойство ShortCut. По умолчанию это свойство не определяет «горячих» клавиш. Для изменения ситуации можно воспользоваться выпадающим списком и выбрать одну из стандартных комбинаций. Другой способ заключается в ручном вводе комбинаций клавиш, отсутствующих в списке, при условии, что они допустимы. Воспользуемся списком свойства ShortCut и добавим для некоторых пунктов подменю клавишные эквиваленты: для пункта Open - клавишу <F3>, для пункта Save - клавишу <F2>, для пункта Exit - комбинацию клавиш<Ctrl+X>.

 

Рис. 20. MenuDesigner во взаимодействии с Object Inspector является средством создания меню

 

Содание кода для обработчиков событий. Для пунктов меню существует событие OnClick. Menu Designer обеспечивает быстрый способ добавления процедур обработки: двойной щелчок на пункте меню или подменю (это проще, чем использовать Object Inspector). В результате откроется окно.

Вызовем указанный обработчик события для пункта Exit и добавим в него строку Close.

Мы не станем загружать действиями другие пункты меню, а просто выведем для них ряд сообщений. Кроме того, изменим название заголовка формы на более короткое «Меню».

Предварительно выполнив двойной щелчок на пункте меню внесем в его обработчик события строку:

- для Report1: Show Message (‘ Gruppa ‘#13’ IU7-21’);

- для Report2: MessageDlg (‘ Gruppa’#13’ IU7-22’, mtInformation, [mbOK],0);

- для Report3:

MessageDlgPos (‘ Gruppa’#13’ IU7-22’, mtWarning, mbOKCancel, 0, 40, 100);

- для About: ShowMessage (‘Ivanov’#13’1.01.2001’).

Результат запуска приложения «Меню» представлен на рис. 21.

Рис. 21. Результат запуска приложения «Меню»

Создание всплывающего меню

Если на любом видимом компоненте Delphi 5 щелкнуть правой кнопкой мыши, на экране возникнет соответствующее этому компоненту всплывающее меню - PopupMenu (компоненты имеют свойство PopupMenu). Этот тип меню служит более ограниченным целям, но имеет преимущество - оно может появляться в месте нахождения курсора и освобождает пользователя от необходимости устанавливать указатель мыши на линейке меню. Рассмотрим технологию создания PopupMenu.

Компонент PopupMenu тоже располагается на странице Standard палитры компонентов - на его пиктограмме присутствует стрелка указывающая на пункт меню. Для создания всплывающего меню следует произвести следующие действия (добавим это меню на уже созданную форму «Меню»):

- добавить на форму «Меню» рядом с пиктограммой MainMenu пиктограмму PopupMenu и дважды щелкнуть на ней;

- создать меню из двух команд: About и Report1;

- закрыть окно Menu Designer;

- щелкнуть на форме, выбирая ее в качестве текущего компонента;

- щелкнуть на свойстве PopupMenu этой формы и в выпадающем меню выбрать значение PopupMenu1.

Запустив приложение «Меню» и щелкнув правой кнопкой мыши можно увидеть всплывающее меню, которое пока не выполняет никаких действий.

Для создания обработчиков событий, поступающих от всплывающего меню, дважды щелкнем в форме на пиктограмме PopupMenu1, после чего появится окно Menu Designer. В Object Inspector на странице Events присвоим событию OnClick выделенного пункта всплывающего меню нужное значение (его можно ввести вручную или выбрать из раскрывающегося списка). Событию OnClick пункта About присвоим значение About1Click, а пункта Report1 - значение Report11Click.

Запустив приложение «Меню» на выполнение можно посмотреть работу всплывающего меню (рис. 22).

 

Рис. 22. Результат работы всплывающего меню приложения «Меню»

 

Для иллюстрации работы некоторых пунктов меню разместим на форме компонент Memo, пиктограмма которого расположена на странице Standard и имеет вид прямоугольника с голубыми строками. Этот компонент похож на компонент Edit, но допускает одновременную работу с несколькими строками данных. Многострочный текст можно вводить при работе приложения или просто ввести его в специальном редакторе.

Для вызова редактора следует воспользоваться свойством Lines и щелкнуть на кнопке с многоточием. Этот редактор используем для удаления слова Memo1.

Далее воспользуемся компонентом Memo для создания или отображения содержимого файлов.

В соответствующие макеты кодов обработчиков событий для пунктов меню Open и Save Asзапишем следующие тексты:

 

procedure TForm1.Open1Click (Sender: TObject);

Var

NameFileOpen: string;

Begin

NameFileOpen:= InputBox (‘Открыть файл’,’Введите имя файла’,’’);



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-02 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: