-
Здравствуйте! Я разрабатываю приложение, особенностью которого являются несколько справочных файлов. Раньше я писал справку в формате WinHelp и проблем не было. Для одних окон указывался один файл, а для других - другой и все работало. Теперь встала задача перенести справку в chm формат. Возникли сложности. Файл chm открыватся из каждого окна на нужной странице по контексту без вопросов, если в поле HelpFile ничего не задано. Файл переопределить получается, но для этого необходимо сделать: Application.HelpFile := 'OtherHelp.chm'; а перед завершением работы формы: Application.HelpFile := 'MainHelp.chm'; Вопрос вот в чем. Как можно централизовано перехватить обращение к справочной системе, проанализировать параметр "HelpFile" и вызвать нужный файл справки с указанным контекстом?
-
Application.OnHelp ?
-
>clickmaker © (13.02.08 13:55) [1] Не срабатывает. Точка останова не работает там.
-
> Как можно централизовано перехватить обращение к справочной > системе
Назначить всем формам единый обработчик OnHelp ?
-
>Сергей М. © (13.02.08 14:10) [3] не хотелось бы вносить изменения во все формы, их много, но в каждой прописан HelpFile и HelpContext. Хотелось бы перехватить вызов стандартного хелпа и обработать его централизовано.
-
> не хотелось бы вносить изменения во все формы
Во все и не надо, достаточно в главную. function TMainForm.AppHelp(Command: Word; Data: Longint; var CallHelp: Boolean): Boolean;
begin
Application.HelpFile := Screen.ActiveForm.HelpFile;
CallHelp := True;
end;
function TMainForm.FormCreate(Sender: TObject);
begin
Application.OnHelp := AppHelp;
end;
-
>Сергей М. © (13.02.08 14:53) [5] спасибо
-
Darvin, а не поскажите ли, как Вам удалось подсоединить chm? С winhelp -ом всё, конечно, просто, а вот с chm... бьюсь уже ни один день.. Была бы безмерно благодарна!!!
-
-
> a_priori © (27.02.08 20:15) [7]
я вот этим пользовался http://www.helpware.net/delphi/index.htmlя открываю так var
kHelpWindowHandle: HWND;
begin
kHelpWindowHandle := HtmlHelp(GetDesktopWindow(), PChar(aFileName),
HH_HELP_CONTEXT, aHelpContext);
if kHelpWindowHandle = 0 then
raise ECannotOpenHelp.Create('Невозможно открыть файл справки '+aFileName+'!')
else
SetForegroundWindow(kHelpWindowHandle);
end;
может я туп и CHM это хорошо, но крови у меня этот CHM выпил не менее литра.
-
2априори
если решитесь юзать мой совет, то обратите внемание на коммент около HHCloseAll - типа где нужно вызывать его.
-
-
> тимохов (28.02.08 00:23) [9]
Ваше предложение отличное, но в Delphi7 нет функции HtmlHelp(). Что делать?
-
> Буланова (11.03.08 15:53) [12]
> Что делать?
Попробуйте все же зайти по ссылке. Если и после этого вопрос "что делать" все еще останется, то самый правильный ответ на него будет такой - менять род деятельности.
-
> Семеныч (11.03.08 16:47) [13]
По-моему, вы сами не знаете ответ на мой вопрос. Я задала конкретно про функцию HtmlHelp() в Delphi7 и что её заменяет. А ссылки посмотреть я могу и без вашего ответа.
-
> Буланова (12.03.08 11:02) [14]
> По-моему, вы сами не знаете ответ на мой вопрос.
Знаю. И знает каждый, кто прочитал [9], сходил по ссылке, хотя бы бегло просмотрел страницу, хотя бы бегло прочитал документацию (которая там есть) и хотя бы немного подумал.
> Я задала конкретно про функцию HtmlHelp() в Delphi7 и что её заменяет.
Вы задали этот вопрос потому, что или не ходили по ссылке совсем, или зашли, но не дали себе труда хотя бы бегло просмотреть страницу, хотя бы бегло прочитать документацию (которая там есть) и хотя бы немного подумать. Если бы Вы это сделали, то вопроса бы не возникло.
Функции HtmlHelp в Delphi7, естественно, нет и быть не может. Ее ничто не заменяет. Чтобы она появилась, нужно предпринять некоторые мозго-мышечные усилия, притом очень небольшие. Начинаются эти усилия с того, что нужно сходить по ссылке, хотя бы бегло просмотреть страницу, хотя бы бегло прочитать документацию (которая там есть) и хотя бы немного подумать. И если после этого вопрос "что делать" все еще останется, то самый правильный ответ на него действительно будет такой - менять род деятельности.
> А ссылки посмотреть я могу и без вашего ответа.
Так и смотрите, что ж мешает-то?
|