Приветствую Вас Прохожий | Получать RSS-новости | Главная | Регистрация | Вход |
Меню сайта

Форма входа

Категория каталога
Разное [78]

Новое на сайте
Новые файлы


Случайные программы


Новые статьи

Тонкая настройка Interne...
10 полезных возможностей...
Центр обновления Windows...
Аппаратный декодер h.264...
Удаление неиспользуемых ...

Последние новости

«Спорту» осталось недолг...
Eutelsat W7. 36E Радуга-...
Astra 1H. 19.2E
Профилактика на спутнике...
Радуга-Интернет на Eutel...

Облако тегов


Друзья сайта
Дискуссионный клуб
Шаблоны для uCoz, скрипты для uCoz  Желтые страницы по спутниковому и кабельному ТВ


Для проживающих в городе Иваново:

Ремонт и настройка вашего компьютера
Установка программ
Защита. Удаление вирусов

Оцифровка видео и аудио материалов с возможностью компьютерного монтажа

Создание небольших сайтов, персональных страничек

Монтаж и настройка спутникового Интернета
и телевидения...

и прочие компьютерные услуги...

По всем вопросам обращаться по тел. 89605108897


Счетчики
Были сегодня:



Статистика

Онлайн всего: 7
Гостей: 7
Пользователей: 0

Главная » Статьи » Разное » Разное

Создание CHM-файлов с помощью Delphi
В последнее время очень популярным форматом справочной документации и электронных книг стал формат 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 

Чтобы создать файл 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.
Категория: Разное | Добавил: Himik (06.05.2009)
Просмотров: 1618 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright Himik © 2024