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

Delphi. Уроки

  Все выпуски  

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


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


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

Рассылка №10

Delphi. VCL. Урок 19. Используем комбинации клавиш.
Delphi. VCL. Урок 20. Системное меню.

Полные версии уроков (с картинками) можно найти по адресам
Урок 19. Используем комбинации клавиш.
Урок 20. Системное меню.

Изучаем Delphi. Библиотека VCL. Урок 19. Используем комбинации клавиш

Комбинации клавиш позволяют пользователю быстро выбирать те или иные действия (типичный пример - это комбинации Ctrl+X, Ctrl+C, и Ctrl+V для вырезания, копирования и вставки).

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

Для задания комбинации клавиш на этапе работы программы используется специальный компонент HotKey, которй расположен на вкладке Win32 Палитры компонентов.

Вот пример использования компонента HotKey и свойства ShortCut на этапе разработки:

  ...
  Menu1.ShortCut:=HotKey1.HotKey;
  ...

В этом примере пункту меню Menu1 присваивается новая комбинация клавиш, задаваемая пользователем в компоненте HotKey1.

Из свойств компонента HotKey отметим два: Modifiers и InvalidKeys. Первое из них отвечает за то, какие клавиши-модификаторы (Alt, Ctrl, Shift или любые их комбинации) могут использоваться для задания комбинации клавиш, второе - какие клавиши-модификаторы использовать нельзя. Оба этих свойства задаются в Инспекторе объектов Modifiers и InvalidKeys.

Другой способ задания комбинаций клавиш для какого-нибудь элемента - это его свойство Caption. Если перед некоторой буквой поставить знак амперсанда (&), то эта буква окажется подчеркнутой и для нее будет действовать комбинация клавиш Alt+эта буква.

Таким способом можно задавать комбинации клавиш и на этапе разработки, и на этапе работы программы.

Наверх

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

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

Часто для небольшого приложения вполне достаточно изменения только этого меню (если вам всего надо добавить только 1-2 пункта в ваше приложение). Для изменения этого меню мы должны использовать API-функцию InsertMenu. Также нам пригодится API-функция GetSystemMenu - она возвращает указатель на системное меню. Вот конкретный пример кода:

  ...
  menu:=GetSystemMenu(Handle, False);
  InsertMenu(menu, 5, MF_ByPosition, 1000, 'About');
  ...

Этот код надо поместить, например, в обработчик нажатия кнопки (при нажатии на которую и будет добавлятся в системное меню новый пункт). Разумеется, переменная menu типа HMENU должна быть до этого определена:

...
var
  menu: HMENU;
  ...

Параметры у функции InsertMenu следующии: первый - это указатель на системное меню. Его мы получили через API-функцию GetSystemMenu. Второй - это номер позиции, на которую наш новый пункт меню вставится (нумерация идет с нуля!). Значение третьего параметра (MF_ByPosition) говорит о том, что второй параметр интерпретируется именно как номер позиции для нового пункта меню. Четвертый - это идентификатор меню (мы задали для него значение 1000). И, наконец, пятый - это заголовок нового пункта меню.

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

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

type
  ...
  procedure SystemMenu(var Msg:TMessage); Message WM_SysCommand;
 ...

Далее пишем сам обработчик:

...
procedure TForm1.SystemMenu(var Msg:TMessage);
begin
  if Msg.wParam=1000 Then //если выбрали меню с идентификатором 1000
    ShowMessage('О программе ...');
  inherited;
end;
 ...

Теперь при выборе нашего пункта меню естественно появится messagebox "О программе ...".

Наверх

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

Copyright сайт progs.biz, 2002


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

В избранное