![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приложение с несколькими chm файлами справки [D7, WinXP]
Darvin © (2008-02-13 13:47:00)Здравствуйте!
Я разрабатываю приложение, особенностью которого являются несколько справочных файлов. Раньше я писал справку в формате WinHelp и проблем не было. Для одних окон указывался один файл, а для других - другой и все работало. Теперь встала задача перенести справку в chm формат. Возникли сложности. Файл chm открыватся из каждого окна на нужной странице по контексту без вопросов, если в поле HelpFile ничего не задано. Файл переопределить получается, но для этого необходимо сделать:
Application.HelpFile := 'OtherHelp.chm';
а перед завершением работы формы:
Application.HelpFile := 'MainHelp.chm';
Вопрос вот в чем. Как можно централизовано перехватить обращение к справочной системе, проанализировать параметр "HelpFile" и вызвать нужный файл справки с указанным контекстом?
Семеныч (2008-03-12 13:22:00) [1]> Буланова (12.03.08 11:02) [14]
> По-моему, вы сами не знаете ответ на мой вопрос.
Знаю. И знает каждый, кто прочитал [9], сходил по ссылке, хотя бы бегло просмотрел страницу, хотя бы бегло прочитал документацию (которая там есть) и хотя бы немного подумал.
> Я задала конкретно про функцию HtmlHelp() в Delphi7 и что её заменяет.
Вы задали этот вопрос потому, что или не ходили по ссылке совсем, или зашли, но не дали себе труда хотя бы бегло просмотреть страницу, хотя бы бегло прочитать документацию (которая там есть) и хотя бы немного подумать. Если бы Вы это сделали, то вопроса бы не возникло.
Функции HtmlHelp в Delphi7, естественно, нет и быть не может. Ее ничто не заменяет. Чтобы она появилась, нужно предпринять некоторые мозго-мышечные усилия, притом очень небольшие. Начинаются эти усилия с того, что нужно сходить по ссылке, хотя бы бегло просмотреть страницу, хотя бы бегло прочитать документацию (которая там есть) и хотя бы немного подумать. И если после этого вопрос "что делать" все еще останется, то самый правильный ответ на него действительно будет такой - менять род деятельности.
> А ссылки посмотреть я могу и без вашего ответа.
Так и смотрите, что ж мешает-то?
Буланова (2008-03-12 11:02:00) [2]
> Семеныч (11.03.08 16:47) [13]
По-моему, вы сами не знаете ответ на мой вопрос. Я задала конкретно про функцию HtmlHelp() в Delphi7 и что её заменяет. А ссылки посмотреть я могу и без вашего ответа.
Семеныч (2008-03-11 16:47:00) [3]> Буланова (11.03.08 15:53) [12]
> Что делать?
Попробуйте все же зайти по ссылке. Если и после этого вопрос "что делать" все еще останется, то самый правильный ответ на него будет такой - менять род деятельности.
Буланова (2008-03-11 15:53:00) [4]
> тимохов (28.02.08 00:23) [9]
Ваше предложение отличное, но в Delphi7 нет функции HtmlHelp(). Что делать?
Tornado (2008-02-29 08:39:00) [5]a_priori © (27.02.08 20:15) [7]
http://www.kv.by/index2004021202.htm
тимохов (2008-02-28 00:25:00) [6]2априори
если решитесь юзать мой совет, то обратите внемание на коммент около HHCloseAll - типа где нужно вызывать его.
тимохов (2008-02-28 00:23:00) [7]
> 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 выпил не менее литра.
Amoeba (2008-02-27 20:18:00) [8]идем сюда:
http://www.ec-software.com/downloads_delphi.html
a_priori (2008-02-27 20:15:00) [9]Darvin, а не поскажите ли, как Вам удалось подсоединить chm? С winhelp -ом всё, конечно, просто, а вот с chm... бьюсь уже ни один день.. Была бы безмерно благодарна!!!
Darvin (2008-02-13 15:05:00) [10]>Сергей М. © (13.02.08 14:53) [5]
спасибо
Сергей М. (2008-02-13 14:53:00) [11]
> не хотелось бы вносить изменения во все формы
Во все и не надо, достаточно в главную.
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;
Darvin (2008-02-13 14:13:00) [12]>Сергей М. © (13.02.08 14:10) [3]
не хотелось бы вносить изменения во все формы, их много, но в каждой прописан HelpFile и HelpContext. Хотелось бы перехватить вызов стандартного хелпа и обработать его централизовано.
Сергей М. (2008-02-13 14:10:00) [13]
> Как можно централизовано перехватить обращение к справочной
> системе
Назначить всем формам единый обработчик OnHelp ?
Darvin (2008-02-13 13:59:00) [14]>clickmaker © (13.02.08 13:55) [1]
Не срабатывает. Точка останова не работает там.
clickmaker (2008-02-13 13:55:00) [15]Application.OnHelp ?