Конференция "Основная" » Приложение с несколькими chm файлами справки [D7, WinXP]
 
  • Darvin © (13.02.08 13:47) [0]
    Здравствуйте!
    Я разрабатываю приложение, особенностью которого являются несколько справочных файлов. Раньше я писал справку в формате WinHelp и проблем не было. Для одних окон указывался один файл, а для других - другой и все работало. Теперь встала задача перенести справку в chm формат. Возникли сложности. Файл chm открыватся из каждого окна на нужной странице по контексту без вопросов, если в поле HelpFile ничего не задано. Файл переопределить получается, но для этого необходимо сделать:
    Application.HelpFile := 'OtherHelp.chm';


    а перед завершением работы формы:
    Application.HelpFile := 'MainHelp.chm';


    Вопрос вот в чем. Как можно централизовано перехватить обращение к справочной системе, проанализировать параметр "HelpFile" и вызвать нужный файл справки с указанным контекстом?
  • clickmaker © (13.02.08 13:55) [1]
    Application.OnHelp ?
  • Darvin © (13.02.08 13:59) [2]
    >clickmaker ©   (13.02.08 13:55) [1]
    Не срабатывает. Точка останова не работает там.
  • Сергей М. © (13.02.08 14:10) [3]

    > Как можно централизовано перехватить обращение к справочной
    > системе


    Назначить всем формам единый обработчик OnHelp ?
  • Darvin © (13.02.08 14:13) [4]
    >Сергей М. ©   (13.02.08 14:10) [3]
    не хотелось бы вносить изменения во все формы, их много, но в каждой прописан HelpFile и HelpContext. Хотелось бы перехватить вызов стандартного хелпа и обработать его централизовано.
  • Сергей М. © (13.02.08 14:53) [5]

    > не хотелось бы вносить изменения во все формы


    Во все и не надо, достаточно в главную.

    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 © (13.02.08 15:05) [6]
    >Сергей М. ©   (13.02.08 14:53) [5]
    спасибо
  • a_priori © (27.02.08 20:15) [7]
    Darvin, а не поскажите ли, как Вам удалось подсоединить chm? С winhelp -ом всё, конечно, просто, а вот с chm... бьюсь уже ни один день.. Была бы безмерно благодарна!!!
  • Amoeba © (27.02.08 20:18) [8]
  • тимохов (28.02.08 00:23) [9]

    > 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 выпил не менее литра.
  • тимохов (28.02.08 00:25) [10]
    2априори

    если решитесь юзать мой совет, то обратите внемание на коммент около HHCloseAll - типа где нужно вызывать его.
  • Tornado © (29.02.08 08:39) [11]
    a_priori ©   (27.02.08 20:15) [7]

    http://www.kv.by/index2004021202.htm
  • Буланова (11.03.08 15:53) [12]

    > тимохов   (28.02.08 00:23) [9]

    Ваше предложение отличное, но в Delphi7 нет функции HtmlHelp(). Что делать?
  • Семеныч (11.03.08 16:47) [13]
    > Буланова   (11.03.08 15:53) [12]

    > Что делать?

    Попробуйте все же зайти по ссылке. Если и после этого вопрос "что делать" все еще останется, то самый правильный ответ на него будет такой - менять род деятельности.
  • Буланова (12.03.08 11:02) [14]

    > Семеныч   (11.03.08 16:47) [13]

    По-моему, вы сами не знаете ответ на мой вопрос. Я задала конкретно про функцию HtmlHelp() в Delphi7 и что её заменяет. А ссылки посмотреть я могу и без вашего ответа.
  • Семеныч (12.03.08 13:22) [15]
    > Буланова   (12.03.08 11:02) [14]

    > По-моему, вы сами не знаете ответ на мой вопрос.

    Знаю. И знает каждый, кто прочитал [9], сходил по ссылке, хотя бы бегло просмотрел страницу, хотя бы бегло прочитал документацию (которая там есть) и хотя бы немного подумал.

    > Я задала конкретно про функцию HtmlHelp() в Delphi7 и что её заменяет.

    Вы задали этот вопрос потому, что или не ходили по ссылке совсем, или зашли, но не дали себе труда хотя бы бегло просмотреть страницу, хотя бы бегло прочитать документацию (которая там есть) и хотя бы немного подумать. Если бы Вы это сделали, то вопроса бы не возникло.

    Функции HtmlHelp в Delphi7, естественно, нет и быть не может. Ее ничто не заменяет. Чтобы она появилась, нужно предпринять некоторые мозго-мышечные усилия, притом очень небольшие. Начинаются эти усилия с того, что нужно сходить по ссылке, хотя бы бегло просмотреть страницу, хотя бы бегло прочитать документацию (которая там есть) и хотя бы немного подумать. И если после этого вопрос "что делать" все еще останется, то самый правильный ответ на него действительно будет такой - менять род деятельности.

    > А ссылки посмотреть я могу и без вашего ответа.

    Так и смотрите, что ж мешает-то?
 
Конференция "Основная" » Приложение с несколькими chm файлами справки [D7, WinXP]
Есть новые Нет новых   [134483   +44][b:0][p:0.001]