Собственно отрыл тут утраченные (оказалось, что нет) исходники одной моей поделки 2009(!) года.
Проблема в том, что в ней был большущий хелп в виндовом формате hlp (собственно исходники в виде rtf тоже сохранились).
Задача сделать из этого всего справочку по типу chm. Однако хочется сами тексты хранить просто в виде html+css, и иметь возможность переходить в нужное место хелпа по #ссылкам.
Как это ваще делается? Подозреваю, что должны помочь HTMLBrowserHelpViewer и HTMLHelpDatabase с вкладки System. Но с чем их едят не могу понять - ткните носом.
Спасибо.
Вопрос: Help а-ля CHM. С помощью чего и как?
Модератор: Модераторы
Я использую THtmlViewer.
Ссылки и картинки работают.
Справка по продукту:
Для загрузки html текста THtmlViewer имеет:
Ссылки и картинки работают.
Справка по продукту:
Код: Выделить всё
function TfShowProduct.SetData(Data: PPrice): Boolean;
var S, sHead, sPic, sBody, sEnd: String;
begin
Result := False;
if not Assigned(Data) then Exit(False);
if Data^.IsTitle then Exit(False);
sHead := '<html>' + sLineBreak +
'<head>' + sLineBreak +
' <meta http-equiv="content-type" content="text/html; charset=utf-8">' + sLineBreak +
'</head>' + sLineBreak +
'<body text="#000000" bgcolor="#ffffff" background="">';
S := CNameDir[Data^.Firm];
sPic := '';
if S > '' then begin
sPic := Format('%s%s\pic\%d.png', [PathToPicture, S, Data^.UNP]);
if not FileExists(sPic) then begin
sPic := Format('%s%s\pic\%d.jpg', [PathToPicture, S, Data^.UNP]);
if not FileExists(sPic) then sPic := '';
end;
end;
if sPic > '' then begin
sPic := Format('<img src="%s" border=0 align=left hspace=20>', [sPic]);
end;
sBody := Data^.Note;
sEnd := '</body>' + sLineBreak + '</html>';
FText := sHead + sLineBreak + sPic + sLineBreak + sBody + sLineBreak + sEnd;
HtmlViewer1.LoadFromString(FText);
Result := True;
end;
Для загрузки html текста THtmlViewer имеет:
Код: Выделить всё
procedure LoadFromDocument(Document: TBuffer; const Reference: ThtString; DocType: THtmlFileType = HtmlType);
procedure LoadFromFile(const FileName: ThtString; DocType: THtmlFileType = HtmlType);
procedure LoadFromStream(const AStream: TStream; const Reference: ThtString = ''; DocType: THtmlFileType = HtmlType);
procedure LoadFromString(const S: ThtString; const Reference: ThtString = ''; DocType: THtmlFileType = HtmlType);- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
С помощью chmmaker. Он не только создает, но и читает CHM. В принципе там все просто. CHM по сути архив сжатых файлов и внем дополнительно есть:
- оглавление в виде дерева (Table of content, TOC)
- оглавление в виде списка (Index)
- назначение номеров разделам оглавления (Alias)
- полнотекстовый поиск (Search)
- настройки внешнего вида браузера справки (Windows)
Есть кроссплатформенный браузер справки lhelp или стандартный виндовый. А можно и программно читать оглавление, делать поиск, извлекать файлы и отображать их в любом HTML браузере или компоненте. Пример чтения CHM можно посмотреть в главной форме chmmaker, там ничего сложного.
Стандартный лазарусовский lhelp и chmmaker давно не развивается. Самый свежий здесь: https://github.com/serbod/lazhelp
- оглавление в виде дерева (Table of content, TOC)
- оглавление в виде списка (Index)
- назначение номеров разделам оглавления (Alias)
- полнотекстовый поиск (Search)
- настройки внешнего вида браузера справки (Windows)
Есть кроссплатформенный браузер справки lhelp или стандартный виндовый. А можно и программно читать оглавление, делать поиск, извлекать файлы и отображать их в любом HTML браузере или компоненте. Пример чтения CHM можно посмотреть в главной форме chmmaker, там ничего сложного.
Стандартный лазарусовский lhelp и chmmaker давно не развивается. Самый свежий здесь: https://github.com/serbod/lazhelp
