Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Отловить клик по системное меню диалога

Delphi , Компоненты и Классы , Меню

Отловить клик по системное меню диалога

Code:
private
 
procedure WhetherUserPressesHelp(var Msg: TMessage); message WM_SYSCOMMAND;
 
....
 
procedure TForm1.WhetherUserPressesHelp(var Msg: TMessage);
begin
   if Msg.WParam = 1001 then
     HelpForm.ShowModal
   else
     inherited; // к примеру вызываем форму на которой будет помощь
end;
Взято с Vingrad.ru http://forum.vingrad.ru

Перевод:

Код, который вы предоставили, написан на языке программирования Delphi, основанном на Паскале. Код определяет процедуру WhetherUserPressesHelp, которая обрабатывает сообщение WM_ SYSCOMMAND, отправляемое при нажатии пользователем системного менюкоманды,such as Help.

Код выполняет следующие действия:

  • Он проверяет, равен ли значение параметра WParam (окно-параметр) сообщения 1001. Это значение соответствует команде SC_ HELP, которая активируется при нажатии пользователем кнопки "Помощь" в системном меню.
  • Если значение параметра WParam совпадает с ожидаемым значением, он отображает модальное окно HelpForm. Это означает, что диалог помощи будет отображаться над основным окном, и пользователь не сможет взаимодействовать с основным окном до тех пор, пока не закроет диалог помощи.
  • Если значение параметра WParam не совпадает с ожидаемым значением (то есть пользователь не нажал кнопку "Помощь"), он вызывает процедуру наследника, которая отвечает за обрабатывание других системных менюкоманд. В этом случае, вероятно, процедура наследника отобразит другое окно с дополнительной информацией о помощи.

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

В примере ниже показано, как можно модифицировать код для использования компонента TActionList:

type
  TForm1 = class(TForm)
    ActionList: TActionList;
    HelpAction: TAction;
    procedure ActionListUpdateActions(Sender: TObject);
  end;

procedure TForm1.ActionListUpdateActions(Sender: TObject);
begin
  if ActionList.ActiveAction = HelpAction then
    HelpForm.ShowModal
  else
    inherited; // Вызывает процедуру наследника для обрабатывания других действий
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ActionList := TActionList.Create(Self);
  HelpAction := TAction.Create(nil);
  HelpAction.Caption := 'Help';
  HelpAction.OnExecute := @ActionListUpdateActions;
  ActionList.Actions.Add(HelpAction);
end;

В этом примере мы создаем форму TForm, которая имеет компонент ActionList и действие HelpAction. Когда пользователь нажимает кнопку "Помощь" в системном меню, событие OnExecute действия HelpAction активируется, которое отображает диалог помощи. Если пользователь нажимает любую другую системную менюкоманду, процедура наследника будет вызвана для ее обрабатывания.

Данная статья описывает способ отлова клика по системному меню диалога в делифии, используя процедуру «WhetherUserPressesHelp» и обработку сообщения WM_SYSCOMMAND.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Меню ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 18:17:51/0.025053977966309/2