Связывание файла справки с приложением Delphi XE2 — все работает, кроме основной формы

Я работаю над установкой файла справки для нашего программного обеспечения. Я добавил номера HelpContext для множества конкретных форм/рамок/элементов управления, и все они работают нормально. Проблема в том, что основная форма вообще не вызывает никакой помощи. Для всего этого я использую только F1, чтобы попытаться вызвать помощь.

Я совсем не эксперт по Delphi или файлам справки, но я опубликую, что я сделал и где я искал.

Изменить: Благодаря некоторой помощи я теперь вижу, что проблема связана с тем, что основная форма является родителем MDI. Это все равно не решает проблему..мне это почти кажется ошибкой, но я полагаю, что по какой-то причине это могло быть преднамеренным. EndEdit

Я включаю этот модуль: HtmlHelpViewer для средства просмотра. В конструкторе создания основных форм я добавил файл Application.Helpfile := 'asdf.chm'. Для всех других форм я просто добавил номера контекста, и это сработало сразу. Я пробовал это в основной форме, и ничего не происходит. Поэтому я попытался добавить событие Application.OnHelp, но оно не вызывается в основной форме (как и во всех других формах, где работает помощь).

Последним средством, которое я мог придумать, было проследить код вглубь и посмотреть, что происходит. Я попал в TCustomForm.WMHelp в Vcl.Forms как место, где происходило разделение. Указанная функция имеет следующий цикл:

if iContextType = HELPINFO_WINDOW then
begin
  Control := FindControl(hItemHandle);
  while (Control <> nil) and ( not ControlHasHelp(Control)) do
    Control := Control.Parent;
  if Control = nil then Exit;
  GetHelpInfo(Control, HType, ContextID, Keyword);
  Pt := Control.ClientToScreen(Point(0, 0));
end

Когда вызывалась главная форма, элемент управления справки был равен нулю, а затем завершался. Все остальное пойдет нормально.

Очевидно, я не знаю, почему это происходит. Ответ может быть чем-то очень простым. Любые идеи были бы хорошы!

6
задан David Heffernan 4 April 2012 в 07:38
поделиться