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

Уроки по C++ Builder

  Все выпуски  

Уроки по C++ Builder


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


C++ Builder. Уроки с сайта http://progs.biz

Рассылка №4

C++ Builder. Урок 7. Работаем с меню (класс TMainMenu).
C++ Builder. Урок 8. Работаем с контекстным меню (класс TPopupMenu).

Полные версии уроков (с картинками) можно найти по адресам
Урок 7. Работаем с меню (класс TMainMenu).
Урок 8. Работаем с контекстным меню (класс TPopupMenu).

C++ Builder. Урок 7. Работаем с меню (класс TMainMenu)

Два ближайших занятия будут посвящены работе с меню. На этом занятии мы посмотрим, как можно применять компонент MainMenu, на следующем - PopupMen. Первый из них представляет главное меню формы, второй - контекстное меню.

Компонент MainMenu расположен на вкладке Standard Палитры компонентов.

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

Посмотрим сейчас, как мы можем добавлять в наше меню пункты разных видов. Для этого сделайте двойной щелчок на расположенном на форме компоненте MainMenu1. Откроется форма, в которой вы сможете создать пункты нашего меню визуальным образом. Для этого надо просто напечатать заголовок в пустом прямоугольнике. Заголовок - это свойство Caption для нашего пункта меню (это видно в окне Инспектора объектов). Если щелкнуть мышкой на прямоугольнике с пунктом меню, то появятся два новых пустых прямоугольника - снизу и справа.

В эти прямоугольники можно напечатать очередные пункты нашего меню.

Часто у подпунктов меню есть свои подпункты. Для создания такого подпункта щелкните правой кнопкой мыши на нужном пункте меню и в контектном меню выберите Create Submenu.

При необходимости у созданных подменю можно создавать собственные подменю и т. д. Но особенно этим увлекаться не следует - слишком большая вложенность обычно не нужна.

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

У меню может быть картинка (за это отвечает свойство Bitmap), оно может быть активным и неактивным (свойство Enabled). Правильнее картинки задавать не отдельно для каждого пункта меню, а с помощью компонента ImageList, представляющего из себя набор картинок. В этом случае в свойство Images для всего меню записываем имя компонента ImageList (по умолчанию это будет ImageList1), и затем для каждого пункта меню задаем свойство ImageIndex, которое и будет задавать номер картинки из ImageList. А еще правильнее делать все это через компонент ActionList (см. урок 6).

Кроме того несколько пунктов меню могут объединяться в группу. Для такого объединения вы должны, во-первых, задать для всех этих пунктов меню одинаковое значение свойства GroupIndex. Во-вторых, необходимо установить у каждого из них свойство RadioItem в true. И в-третьих, надо написать код, который будет устанавливать отметку рядом с выбранным пунктом меню. За это отвечает свойство Checked. Код, например, может быть таким:

void __fastcall TForm1::Subitem1Click(TObject *Sender)
{
  Subitem1->Checked=true;
  //Действия при выборе первого пункта меню
  ...
}
 ...
void __fastcall TForm1::Subitem2Click(TObject *Sender)
{
  Subitem2->Checked=true;
  //Действия при выборе первого пункта меню
  ...
}

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

Наверх

C++ Builder. Урок 8. Работаем с контекстным меню (класс TPopupMenu)

Компонент PopupMenu расположен на вкладке Standard Палитры компонентов.

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

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

После чего при щелчке правой кнопкой мыши на компоненте контекстное меню и появится.

При необходимости контекстное меню можно вызывать и другим способом. Например, нам надо, чтобы оно появлялось не всегда, а только при выполнении некоторого условия (скажем, если мы щелкнули на определенном месте формы). В этом случае нам надо для показа меню вызвать его метод Popup. У этого метода два параметра - X и Y того места, где контекстное меню должно появится. Вот пример использования этого метода:

void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  if (X<30)
  {
    //Преобразовываем кооринаты
    TPoint point = ClientToScreen(Point(X, Y));
    //Показываем меню
    PopupMenu1->Popup(point.x, point.y);
  }
}

В приведенном примере контекстное меню появится только если мы щелкнули на форме на расстоянии не больше чем 30 пикселов от левого края. Еще раз обратите внимание, что параметры X и Y у метода Popup контекстного меню - это координаты относительно всего экрана. В метод же FormMouseDown передаются координаты щелчка мыши относительно формы. Для преобразования одних координат в другие используем метод ClientToScreen.

Наверх

Другие рассылки с сайта progs.biz

Рассылки Subscribe.Ru
Уроки по C# и .NET.

Уроки по C# - новому языку от Microsoft для платформы .NET. Создание разных типов приложений (консольные, для Windows, веб-приложения), работа с базами данных, создание собственных компонентов. Примеры, исходники, статьи, FAQ.


Copyright Шмидт Отто, 2002

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

Copyright сайт progs.biz, 2002


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

В избранное