Опубликован: 07.04.2008 | Уровень: специалист | Доступ: платный
Лекция 8:

Меню

< Лекция 7 || Лекция 8: 12 || Лекция 9 >

Всплывающее меню

Всплывающее меню вызывается, когда пользователь щелкает правой кнопкой мыши по объекту – форме или какому либо другому компоненту. Найдите на вкладке Standard компонент PopupMenu (всплывающее меню), и также установите его поверх компонента Memo. Редактор этого меню вызывается таким же образом, как и редактор главного меню. Во всплывающем меню, однако, только одна ветка меню, где команды указываются одна под другой. Другими словами, нет возможности делать пункты меню (Файл, Правка, Вид и т.д.) и подпункты (Файл -> Создать, Файл -> Загрузить и т.д.).

Создайте следующие команды:

  • "Сохранить"
  • "Загрузить"
  • "Очистить"
  • "-"
  • "Выход"

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

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

Теперь всплывающее меню нужно привязать к форме, само по себе оно работать не будет. Для этого нам нужно выделить форму, что является непростой задачей – компонент Memo растянут на все окно, и нет возможности щелкнуть по свободному месту формы. Форму проще всего выделить в окне Дерева объектов (Object TreeView). Если у вас в данный момент это окно закрыто, открыть его можно командой меню View-> Object TreeView, или горячими клавишами <Shift+Alt+F11>. В этом окне легко можно выделить любой компонент, в том числе и форму.

Итак, выделите форму. В окне Инспектора объектов отразятся свойства формы. Нас интересует свойство PopupMenu. Оно имеет вид списка, в котором мы можем выбрать то или иное всплывающее меню. Поскольку такое меню у нас только одно, его и выбираем. Теперь можно сохранить проект, скомпилировать его и запустить на выполнение. Щелчок правой кнопкой на любом месте формы приведет к вызову всплывающего меню.

Всплывающее меню также называют контекстными – дело в том, что многие компоненты имеют свойство PopupMenu – редактор Memo, панели и многие другие компоненты. Можно установить несколько всплывающих меню с разными командами, и привязать к различным компонентам свои собственные PopupMenu. Тогда щелчок правой кнопкой над одним компонентом приведет к вызову одного всплывающего меню, над другим – другого.

Модальные окна

Модальным называется дочернее окно, которое не дает главной форме работать, пока не закончена работа этого модального окна.

До сих пор мы делали проекты только с одной формой. Настало время изучить многооконные проекты. Воспользуемся предыдущим примером – редактором текстов. Откройте этот проект, если он закрыт.

Чтобы создать новое окно, выберите команду "File – NewForm".

В свойстве Caption новой формы напишите "О программе", форму назовите fAbout и сохраните проект. Модуль новой формы, соответственно, назовите About.

На форму установите компонент Label, напишите в его свойстве Caption "Программа: MyNotebook v 1.0"

Ниже установите еще один Label. Свойство AutoSize (автоматическое изменение размера) поставьте в False, а свойство WordWrap (перенос слов на другую строку) – в True. Здесь напишите такой текст:

Программа предназначена для простого редактирования текстов. Программа позволяет сохранять текст в файл, и считывать его из файла. Файл создается там же, откуда запущена программа, и имеет имя MyFile.txt.

Ниже установим еще один Label. Пишем в нем: "Автор: такой-то", можете указать свои собственные фамилию, имя и отчество. Будет красиво, если текст этого компонента выйдет посередине. Чтобы добиться этого, свойство AutoSize (автоматическое изменение размера) установите в False, свойство Alignment (выравнивание текста) в taCenter.

Ниже устанавливаем кнопку. Пишем на ней "ОК" и создаем обработчик кнопки для выхода из формы.

Инструкция Close главной формы закрывает всю программу, а инструкция Close модального окна закрывает только это окно.

Внешний вид формы "О программе"

Рис. 8.3. Внешний вид формы "О программе"

Можете "поиграть" со свойствами Font и Color компонентов, чтобы форма выглядела красивее.

Подобные окна не имеют кнопок "Свернуть" и "Развернуть", поэтому в свойстве BorderStyle формы fAbout выберите значение bsDialog. А в свойстве Position (Позиция формы при ее открытии) выберите poMainFormCenter, чтобы форма появлялась по центру главного окна. Обратите внимание на последнее свойство. Обычно для главных окон программы это свойство устанавливают в poDesktopCenter, чтобы форма появлялась по центру рабочего стола, запомните это на будущее.

Теперь, чтобы можно было вызывать это окно модально, нужно "привязать" его к главной форме. Сейчас в редакторе кодов имеется две вкладки – Main и About, это модули главной формы и формы "О программе". Перейдите на вкладку главного окна и нажмите <F12>, чтобы вызвать это окно. Выберите команду "File – Use Unit". Откроется окно, где мы увидим нашу модальную форму. Выделите ее и нажмите OK. Теперь, если Вы посмотрите код главной формы, под разделом implementation Вы увидите такую картину:

implementation

uses About;

Delphi вставила инструкцию, при которой главная форма использует все, что описано в коде модального окна. Можно было набрать все это вручную, однако во избежание ошибок рекомендуется пользоваться командой "File – Use Unit". Тогда код точно будет введен без ошибок, и именно в то место, которое нужно.

uses About;

Теперь в главной форме снова откройте редактор главного меню, дважды щелкнув по компоненту MainMenu. Выделите пункт справа от "Файл", и в свойстве Caption напишите "Справка". А в пункте ниже напишите "О программе":

Редактор главного меню

Рис. 8.4. Редактор главного меню

При разработке меню не забывайте о стандартах, принятых в Windows. Никто не запрещает Вам засунуть подраздел "О программе" в Пункт "Файл" или какой-нибудь другой. Однако пользователь будет искать его именно в разделе "Справка". Не заставляйте пользователя привыкать к другим стандартам, если хотите, чтобы ваши программы пользовались спросом!

Теперь нужно написать код вызова модального окна. Дважды щелкните по подразделу меню "О программе", чтобы создать процедуру обработки этого подраздела. Там введите инструкцию:

fAbout.ShowModal;

Помните, что мы вызываем форму модального окна ( fAbout ), поэтому нужно обращаться именно к ней.

Сохраните проект, скомпилируйте программу и посмотрите результат.

< Лекция 7 || Лекция 8: 12 || Лекция 9 >
Виктор Пелих
Виктор Пелих

Здравствуйте.
Прохожу курс "Введение в программирование на Delphi"
Добрался до Лекции 29: Введение в базы данных.

Установлена RAD Studio 11.3, у которой отсутствует вкладка BDE и, соответственно, компонент Table,  который обеспечивает доступ к таблице средствами механизма BDE.
Поиск в интернете подсказал 
BDE Installer for RAD Studio, Delphi, C++Builder 10.3 Rio
Подскажите, имеется ли ещё возможность использовать механизм BDE в Delphi11 и если такая возможность есть, как подключить BDE к Delphi11?
С уважением...

 

Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Данила Некрасов
Данила Некрасов
Россия, Пермь, ПНИПУ
Сергей Федоров
Сергей Федоров
Россия