Как я могу использовать файл hlp для контекстно-зависимой справки в моем приложении?

У меня есть файл.hlp, который идет с приложением.
Поскольку функциональность не изменилась с тех пор, как я в последний раз писал приложение, программа hlp (написанная в 2003 году) остается в силе.
Однако, когда я компилирую приложение в Delphi XE7, я не могу заставить приложение распознавать файл hlp.

В файле.dpr у меня есть

begin
  Application.Initialize;
  Application.HelpFile := 'Life32.hlp';
  Application.Run;
  //sometimes the application hung here, due to OLE issues
  //exitprocess prevents that.
  ExitProcess(0);
end.

Когда я делаю

procedure TProgCorner.Button2Click(Sender: TObject);
begin
  Application.HelpContext(4);
end;

я получил

Исключение из первого шанса на $75EEB9BC. Класс исключения EHelpSystemException с сообщением "Не установлена ​​контекстно-зависимая справка".

helpfile свойство формы устанавливается в exename.hlp,
Вручную дважды щелкнув по .hlp файл в проводнике открывает файл hlp просто отлично.

Как заставить Delphi открывать файл hlp при вызове?

2 ответа

Решение

Вы должны включить Vcl.WinHelpViewer модуль в вашем проекте для установки системы WinHelp.

Имейте в виду, что поддержка WinHelp прекратилась в XP, и в более поздних версиях компонент WinHelp должен быть установлен отдельно.

Для более поздних версий Delphi, таких как 10 (Сиэтл), 10.1 (Берлин), 10.2 (Токио), 10.3 (Рио) и 10.4 (Сидней):

  • Если ваш файл справки представляет собой файл WinHelp .hlp, добавьте модуль Vcl.WinHelpViewer в раздел uses приложения.
  • Если ваш файл справки представляет собой файл .chm HTML-справки, добавьте модуль Vcl.HtmlHelpViewer вместо модуля Vcl.WinHelpViewer.

Вы не должны добавлять оба блока в одно приложение.

Полная статья: Редактор свойств HelpContext от HelpScribble

Другие вопросы по тегам