При настройках по умолчанию обработка сообщений справки TOpenDialog не работает (вы должны отправить ее в Quality Central).
Конкретная причина в том, что Windows отправляет сообщение помощи родителю диалога, а не самому диалогу., поэтому, если ваша форма не настроена на обработку, она просто игнорируется.
Исправление состоит в том, чтобы установить Application.ModalPopupMode на pmAuto вместо значения по умолчанию pmNone.Вы можете сделать это один раз во время обычного кода запуска или непосредственно перед отображением диалогового окна.Когда это установлено, Delphi создает промежуточное окно (Dialogs.pas :: TRedirectorWindow), которое правильно обрабатывает сообщение.
Если по какой-то причине вы не можете изменить ModalPopupMode, то, как я уже сказал, вам нужно обработатьсообщение в вашей форме:
TForm22 = class(TForm)
...
procedure WndProc(var Message: TMessage); override;
end;
initialization
var
HelpMsg: Cardinal;
procedure TForm22.WndProc(var Message: TMessage);
begin
inherited;
if (Message.Msg = HelpMsg) and (OpenDialog1.Handle <> 0) then
Application.HelpContext(OpenDialog1.HelpContext);
end;
initialization
HelpMsg := RegisterWindowMessage(HelpMsgString);
end.