Отправляет email-рассылки с помощью сервиса Sendsay

Delphi. Уроки

  Все выпуски  

Уроки программирования по Delphi.


Информационный Канал Subscribe.Ru


Delphi. Библиотека VCL. Уроки по программированию с сайта http://progs.biz

Рассылка №9

Delphi. VCL. Урок 16. Работаем с меню.
Delphi. VCL. Урок 17. Контекстное меню.
Delphi. VCL. Урок 18. Динамически меняем меню.

Полные версии уроков (с картинками) можно найти по адресам
Урок 16. Работаем с меню.
Урок 17. Контекстное меню.
Урок 18. Динамически меняем меню.

Изучаем Delphi. Библиотека VCL. Урок 16. Работаем с меню

Delphi поддерживает работу с разными видами меню - с обычным меню (по другому оно называется главным меню приложения), с контекстным меню, с системным меню. В этом уроке мы с вами посмотрим, как можно использовать в ваших программах на Delphi обычное меню. Для размещения в вашей программе такого меню выберите компонент MainMenu на вкладке Standard на Палитре компонентов.

После этого на вашей форме появится компонент с именем MainMenu1.

Где он распологается на вашей форме на этапе разработки программы - все равно. На этапе выполнения меню все равно будет в своем стандартном месте - наверху формы. Сейчас в нашем компоненте MainMenu1 нет пунктов меню. Для добавления новых пунктов меню просто сделайте двойной щелчок на MainMenu1. Откроется окно редактора меню. Добавьте в него два пункта (для этого просто введите нужные названия пунктов меню с клавиатуры).

Закройте окно редактора меню и запустите программу. На форме должно появится наше меню.

Теперь посмотрим, как можно добавить обработчик для какого-нибудь пункта меню. Для добавления обработчика просто щелкните на нужном вам пункте меню (на этапе разработки программы, конечно). Откроется окно кода с сгенерированной заготовкой для обработчика, в которую просто впишите нужный вам код (мы в нашем примере просто вызываем messagebox):

procedure TForm1.Submenu1Click(Sender: TObject);
begin
  ShowMessage('Выбрано меню Sub menu');
end;

Вот, собственно, и все.

Наверх

Изучаем Delphi. Библиотека VCL. Урок 17. Контекстное меню

После обычного меню посмотрим, как в Delphi можно работать с контекстным меню. Компонент для него расположен на вкладке Standard Палитры компонентов.

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

Для того, чтобы при щелчке правой кнопкой мыши на некотором элементе появлялось контекстное меню, мы должны написать в свойстве PopupMenu для этого элемента написать имя нашего контекстного меню. Сделаем это, например, для нашей формы.

Для этого проще всего нажать на стрелочку вниз в правом столбце Инспектора объектов - там в combobox'е будут присутствовать все контекстные меню, расположенные на форме. В нашем случае оно будет только одно.

Добавляются новые пункты в контекстное меню аналогично стандартному меню - через редактор. Для его появления просто сделайте двойной щелчок на нашем контекстном меню или нажмите на кнопку с двоеточием рядом с его свойством Items.

Добавьте в наше меню два пункта - Пункт 1 и Пункт 2.

Для добавления обработчика для некоторого пункта нашего меню просто сделайте двойной щелчок на нем. Создастся заготовка для кода. Добавте в нее вызов messagebox'а:

procedure TForm1.N11Click(Sender: TObject);
begin
  ShowMessage('Пункт1');
end;

Запускайте программу (F9). При желчке правой кнопкой мыши на форме должно появиться наше контекстное меню.

При выборе в этом меню подменю Пункт 1 появится messagebox с соответствующей надписью.

Вообще же контекстное меню можно прибавить к любому элементу. Просто задайте свойство PopupMenu.

Наверх

Изучаем Delphi. Библиотека VCL. Урок 18. Динамически меняем меню

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

Для начала добавим новый пункт для контекстного меню и обработчик для него. После того, как мы сделаем это, нами будет рассмотрено добавление нового пункта меню в обычное меню.

В качестве основы возьмите проект, созданный на прошлом уроке. Добавьте на форму кнопку. В событие Click для добавленной кнопки внесите следующий код:

procedure TForm1.Button1Click(Sender: TObject);
//Заводим переменную для нового меню
var NewItem: TMenuItem;
begin
  //Создаем пункт меню
  NewItem:=TMenuItem.Create(self);
  //Приписываем к пункту меню обработчик
  NewItem.Action:=Action1;
  //Задаем заголовок
  NewItem.Caption:='Пункт 3';
  //Добавляем новый пункт меню
  PopupMenu1.Items.Add(NewItem);
end;

Код ясен из комментариев. Осталось добавить только элемент ActionList. Он нужен для строки

...
  NewItem.Action:=Action1;
 ...

Добавьте элемент ActionList, добавьте в него действие Action1 (если забыли, то смотрите Урок 14). В обработчик для Action1 добавьте следующий код:

procedure TForm1.Action1Execute(Sender: TObject);
begin
  ShowMessage('Обработчик для меню');
end;

Все, запускайте программу. При нажатии на кнопке в контекстное меню для формулы добавится новый пункт "Пункт 3", при щелчке на котором появится messagebox с соответствующей надписью.

Теперь посмотрим, как добавлять новые пункты меню в главное меню приложения. Здесь возможны два варианта - мы можем добавить его в качестве меню самого верхнего уровня и в качестве нового подменю в уже существующее меню. Рассмотрим сначала первый случай. Возьмите в качестве основы программу, созданную в уроке 16. Добавьте на форму кнопку, а в обработчик щелчка этой кнопки следующий код:

procedure TForm1.Button2Click(Sender: TObject);
var NewMainItem: TMenuItem;
begin
  NewMainItem:=TMenuItem.Create(self);
  NewMainItem.Action:=Action1;
  NewMainItem.Caption:='Sub menu 2';
  //Добавляем меню верхнего уровня
  MainMenu1.Items.Add(NewMainItem);
end;

При запуске программы и нажитии на вторую кнопку у нашей программы появится новое меню верхнего уровня.

Если же нам надо добавить подменю в пункт нашего главного меню, то мы должны написать что-то вроде:

  ...
  NewMainItem.Caption:='Sub menu 2';
  //Добавлем подменю
  MainMenu1.Items[0].Add(NewMainItem);
  ...

Здесь нолик в квадратных скобках показывает номер меню, в который мы добавляем наш новый пункт (нумерация идет с нуля).

Тогда при запуске программы и нажитии на вторую кнопку у меню Menu появится новое подменю.

С этим уроком все!

Наверх

Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное