|
Навигация
|
Главная » Delphi
Создание CHM-файлов с помощью Delphi (исходники)
Источник: delphiplus Youri Sh. В последнее время очень популярным форматом справочной документации и электронных книг стал формат CHM. Это связано с удобством этого формата по сравнению с форматом HLP, а также с "продвижением" этого формата самой MICROSOFT. В данной статье, я хочу рассказать, как создать файлы справки CHM с помощью программ, написанных на Delphi, но без помощи таких общеизвестных утилит, как hhc.exe и hha.dll.
Способ первый: С помощью компоненты TCHMFile TCHMFile - это единственная VCL компонента для компиляции и декомпиляции нескольких HTML документов в один CHM-файл.
Разберём процесс компиляции CHM документа на примере следующего кода: procedure Compile; var F: TChmFile; begin F := TChmFile.Create('c:\test.chm', omCreateWrite); with TChmHeader.Create do begin Toolbar := True; ToolbarCaptions :=True; Buttons := [cbHome, cbBack]; Title := 'Test'; Default file := 'index.htm'; TocFile := 'Table of Contents.hhc'; IndexFile := 'Ind.hhk'; PaneVisible := True; PaneTocTab := True; PaneFavTab := True; PaneIndexTab := True; PaneTabPos := ctpTop; WndName:='main'; PaneWidth:=200; Left:=100; Top:=100; Height:=500; Width:=800; Write(F); Free; end; F.AddFile('index.htm', 'C:\test\index.htm'); F.AddFile('images\pic.jpg', 'C:\test\images\pic.jpg'); F.Free; end. Эта процедура создаёт CHM-файл, путь которого "c:\test.chm", а его свойства устанавливаются с помощью TChmHeader: - Toolbar - параметр, с помощью которого в CHM-файле показывается панель управления;
- ToolbarCaptions - параметр, указывающий, что необходимо отображать подписи к кнопкам;
- Buttons - здесь указываются кнопки, которые будут отображаться на панели управления. Возможные варианты кнопок: cbExpand (Скрыть), cbBack (Назад), cbForward (Далее), cbStop (Остановить), cbRefresh (Обновить), cbHome (Домашняя страница), cbZoom (Размер), cbOptions (Параметры), cbPrint (Печать), cbJump1 (Первая пользовательская кнопка), cbJump2 (Вторая пользовательская кнопка);
- Title - название справочной системы, которое будет отображаться в заголовке главного окна;
- Default file - имя страницы по умолчанию, которая открывается сразу после загрузки файла;
- TocFile - имя файла Содержания справочной системы;
- IndexFile - имя файла Индекса справочной системы;
- PaneVisible - параметр, указывающий отображать панели;
- PaneTocTab - параметр, указывающий на создание панели "Содержание";
- PaneFavTab - параметр, указывающий на создание панели "Избранное";
- PaneIndexTab - параметр, указывающий на создание панели "Указатель";
- PaneTabPos - местоположение вкладок на панели навигации. Возможные варианты: ctpTop (Сверху), ctpLeft (Слева), ctpBottom (Снизу);
Свойства главного окна: - WndName - название окна, в котором откроется справка во время просмотра. Желательно задавать значение "main";
- PaneWidth - ширина навигационной панели в пикселях (по умолчанию это значение равно 250);
- Left - положение главного окна справки слева, указывается в пикселях;
- Top - положение главного окна справки сверху, указывается в пикселях;
- Height - высота главного окна справки, указывается в пикселях;
- Width - ширина главного окна справки, указывается в пикселях;
Далее идёт процесс записи файла на диск (собственно создание файла CHM) и добавление в справочную систему всех необходимых файлов (HTML документов, рисунков, относящихся к этим документам и др.). Способ второй: С помощью динамической библиотеки kkyyhhd.dll kkyyhhd.dll была найдена мною на просторах интернета. Для компиляции справки CHM Вам понадобится файл проекта (HHP). Обычно этот формат выглядит так: [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 необходимо выполнить следующий код в Вашей программе: procedure 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.
KOL - кодоэкономичная объектная библиотека для Delphi. Шифрование в Delphi (исходники). Embarcadero объявляет о выходе FireDAC. Сравнение ООП языков: Java, C++, Object Pascal (документация). Структура программ Delphi.
Главная » Delphi
|