На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Создание файлов CHM , генерация файлов справки в Delphi
    люди добрые!!!
    столкнулся с проблемой генерации файлов справки CHM, а компонентов для работы не нашел ...
    может у кого есть компонент TChmFile - а то автор собака не хочет делиться ... согласен и на старую версию, но нужны сорцы на дельфях ...
    заранее спасибо если кто что найдет ... ;)

    Добавлено
    кстати вспомнил ... про dll-ы с исходников знаю ... :whistle: они не нужны
    Сообщение отредактировано: andrew.virus -
      Генерация файлов справки CHM делается старинной (бесплатной) программой HTML Help Workshop. Легко нахОдится на сайте билла. Не без недостатков, но достойной альтернативы не нашёл, имхо.
      Причём тут TChmFile не понял.
      Кстати, начиная с Delphi2006 файлы справки .chm подключаются к программе почти так же легко, как и .hlp.
      Спросите меня "как".
        В принципе сам формат не очень сложный. Вот описание формата. Хотя где-то у меня и валялся этот компонент вроде, постараюсь поискать...
          Очень хороший инструмент для составления различных справок CHM и HLP
          или декомпиляции их в исходники
          Help & Manual 4.5
          сама программа качается с
          http://www.helpandmanual.com/

          если при компиляции проекта убрать галочку "Удалять исходники", то в каталоге Source останутся файлы проекта, которые потом можно компилировать и другими программами.

          Не все файлы декомпилируются полноценно - это особенности справочных форматов.

          Ну а если хочется из своей программы - то надо сформировать html файлы статей, скриптов js (для всплывающих подсказок по наведению курсора) и файлы проекта hhp, hhk, hhc...
          и запустить Микрософтовский HTML Help Workshop через командную строку ShellExecuteEx(@SEInfo)
          ExpandedWrap disabled
            procedure TForm1.btCompileClick(Sender: TObject);
            var
            SEInfo: TShellExecuteInfo;
            ExitCode: DWORD;
            ExecuteFile, ParamString, LogString, StartInString: string;
            begin
              ParamString:='C:\notepad\notepad.hhp'; // проект
              LogString:='C:\notepad\notepad.log'; //файл отчета/ошибок
              StartInString:='C:\Program Files\HTML Help Workshop'; //каталог компилятора
              ExecuteFile := 'C:\Program Files\HTML Help Workshop\hhc.exe '; // компилятор
              FillChar(SEInfo, SizeOf(SEInfo), 0);
              SEInfo.cbSize := SizeOf(TShellExecuteInfo);
              with SEInfo do
                begin
                fMask := SEE_MASK_NOCLOSEPROCESS;
              Wnd := Application.Handle;
              lpFile := PChar(ExecuteFile);
              {ParamString can contain theapplication parameters.}
               lpParameters := PChar(ParamString);
              {StartInString specifies thename of the working
              directory.If ommited, the current
              directory is used.}
               lpDirectory := PChar(StartInString);
              nShow := SW_SHOWNORMAL;
            end;
            if ShellExecuteEx(@SEInfo) then
            begin
              repeat
              Application.ProcessMessages;
              GetExitCodeProcess(SEInfo.hProcess, ExitCode);
            until (ExitCode <> STILL_ACTIVE) or
            Application.Terminated;
            ShowMessage('Компиляция закончена'); //Не обязателен
            end
            else
              ShowMessage('Error starting Компиляции!');
             
              RichEdit2.Clear;
              RichEdit2.Lines.LoadFromFile(LogString); //Вывод лога от компилятора
            end;
          Сообщение отредактировано: freesend7 -
            Цитата Selya @
            Спросите меня "как".

            Если имееться в виду HTMLHelpViewer, то у меня он почему-то не смог подхватить справку скомпилированную в Help&Manual. Я изпользую StoHtmlHelp.
              Спасибо большое за советы с ПО особенно от "макрософта" но нужен именно компонент с исходниками хочется ручками дойти ... самому ...
                Profi
                А чем принципиально отличается CHM, собранный в Help&Manual от собранного в HTML Help Workshop? У меня прекрасно всё получилось подцепить с помощью HTMLHelpViewer в Delphi 2007, и справка вызывается как из меню, так и по F1 в контексте.
                Единственное была проблема:
                При вызове справки из пункта меню вместо
                ExpandedWrap disabled
                  Application.HelpSystem.ShowTableOfContents;

                надо использовать
                ExpandedWrap disabled
                  Application.HelpShowTableOfContents;

                А при вызове топика справки по индексу вместо
                ExpandedWrap disabled
                  Application.HelpSystem.ShowContextHelp(IDH_About, '');

                надо использовать
                ExpandedWrap disabled
                  Application.HelpContext(IDH_About);
                  // или Application.HelpContext(0); // т.к. IDH_About=0 (в файле с индексами map.h)

                Так же прекрасно работает и
                ExpandedWrap disabled
                  MessageDlg('Click Help',mtWarning,[mbOk,mbHelp],IDH_Feedback); // где IDH_Feedback имеет индекс 2 в map.h
                  Selya
                  Interface not supported.
                    Ну вот, я же писал выше, что лучшей альтернативы HTML Help Workshop я так и не нашёл, несмотря на все его глюки вылеты и "Win3.1" интерфейс :)
                      Цитата Selya @
                      Ну вот, я же писал выше, что лучшей альтернативы HTML Help Workshop я так и не нашёл, несмотря на все его глюки вылеты и "Win3.1" интерфейс :)

                      Так Help&Manual и использует HTML Help Workshop в кочестве компилятора для chm.
                        И ещё такой момент, какой у тебя стоит Internet Explorer? Попробовал сейчас дома сляпать CHM демо проект - не получилось :o Internet Explorer 7
                        На работе ослика не обновлял - там всё нормально компилится!
                          Цитата Profi @
                          Help&Manual

                          Бывший коллега делал все в Help&Manual, и я без проблем прицеплял chm-ину к проету. Может версия e тебя старая, или не регестрированная. Помню точно были проблемы с Trial версией, пришлось "купить" :)
                            Вот написал демо проект Delphi&CHM, всё прекрасно работает. Пользуйте на здоровье и помяните меня добрым словом. ;)
                            Прикреплённый файлПрикреплённый файлDelphi_CHM.rar (198.28 Кбайт, скачиваний: 860)
                              Selya спасибо за исходничок ;) но нужно не только работать с CHM-файлами но и компилить их самостоятельно без внешнего ПО ... если есть что-то по этой тематике то напиши .... :whistle:
                                kkyyhhd.dll была найдена мною на просторах интернета. Для компиляции справки CHM Вам понадобится файл проекта (HHP). Обычно этот формат выглядит так:
                                ExpandedWrap disabled
                                  [OPTIONS]
                                  Compatibility=1.1 or later
                                  Compiled file=Справка.chm
                                  Contents file=Table of Contents.hhc
                                  Default window=main
                                  Default topic=index.htm
                                  Full-text search=Yes
                                  Index file=Ind.hhk
                                  Language=0x419 Русский
                                   
                                  [WINDOWS]
                                  main="Название","Table of Contentc.hhc","Ind.hhk","index.htm","home.htm",,,,,132128,200,8198,[119,78,769,534],0,0,,,,1,0
                                   
                                  [FILES]
                                  C:\test\index.htm
                                  C:\test\home.htm
                                  C:\test\lis1.htm


                                Подробное описание параметров данного формата, а также форматов HHC и HHK, Вы можете посмотреть здесь.

                                Чтобы создать файл CHM необходимо выполнить следующий код в Вашей программе:
                                ExpandedWrap disabled
                                  ocedure AddLog(Memo: TMemo; SStr: PChar; Addn:bool=false);
                                  begin
                                      Memo.Text := Memo.Text + SStr;
                                      if Addn then Memo.Text := Memo.Text + #13#10;
                                  end;
                                   
                                  procedure pLogString(pMsg: PChar); stdcall;
                                  begin
                                      AddLog(Form1.Memo1,pMsg);
                                  end;
                                   
                                  function pProgress(pFile: PChar):bool; stdcall;
                                  begin
                                      AddLog(Form1.Memo2,pFile,true);
                                      Result := True;
                                  end;
                                   
                                  procedure TForm1.Button1Click(Sender: TObject);
                                  var
                                      Had: HWND;
                                      hhp:  function(pszHhpFile: PCHAR; pLogString: Pointer; pProgress: Pointer):bool;stdcall;
                                  begin
                                      Had := LoadLibrary('kkyyhhd.dll');
                                      if Had <> 0  then
                                        begin
                                          @hhp := GetProcAddress(Had, 'CompileHHP');
                                          if @hhp <> nil then
                                            hhp(PCHAR('Путь к файлу HHP'),@pLogString,@pProgress);
                                          FreeLibrary(Had);
                                     end;
                                  end;

                                При этом в папке с файлом проекта HHP появится справка CHM, а в самой программе в TMemo Вы увидите детальный log, примерно такой же как в программе Microsoft HTML Help Workshop.

                                На этом пожалуй всё. Надеюсь эта статья многим поможет быстро создавать и использовать документацию в формате CHM.

                                Взято с www.interface.ru
                                Прикреплённый файлПрикреплённый файлkkyyhhd.zip (26.21 Кбайт, скачиваний: 404)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0407 ]   [ 16 queries used ]   [ Generated: 27.04.24, 10:32 GMT ]