Как прикрепить обработчик событий OnHelp к объекту Application? - PullRequest
1 голос
/ 05 августа 2020

В Embarcadero Delphi XE7 я использую компонент, у которого есть кнопка справки. В компоненте (который показывает диалоговое окно сообщения) я указываю номер контекста справки. Если пользователь нажимает кнопку, справка должна отображаться, но вместо этого я получаю сообщение об ошибке:

Project ... поднял класс исключения $ C00000FD с сообщением «переполнение стека на 0x006f089e».

Команда, выполняемая, когда пользователь нажимает кнопку:

Application.HelpContext(HelpContextNumber);

Вкл Запуск HTML Справка как отдельный процесс , я прочитал, что я должен прикрепить OnHelp обработчик событий для объекта Application.

Я сохранил блок справки, но как его прикрепить?

Application.OnHelp := ....?

1 Ответ

0 голосов
/ 06 августа 2020

Событие TApplication.OnHelp объявлено как THelpEvent:

THelpEvent = function(Command: Word; Data: THelpEventData; var CallHelp: Boolean): Boolean of object;  

Таким образом, вам нужно будет объявить в своей форме метод, например это:

type
  TMyForm = class(TForm)
    ...
  private
    function MyOnHelpHandler(Command: Word; Data: THelpEventData; var CallHelp: Boolean): Boolean;
    ...
  end;

И затем вы можете назначить этот обработчик событию TApplication.OnHelp во время выполнения, например:

procedure TMyForm.FormCreate(Sender: TObject);
begin
  Application.OnHelp := MyOnHelpHandler;
end;

procedure TMyForm.FormDestroy(Sender: TObject);
begin
  Application.OnHelp := nil;
end;

function TMyForm.MyOnHelpHandler(Command: Word; Data: THelpEventData; var CallHelp: Boolean): Boolean;
begin
  Result := ...;
end;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...