уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Не так давно я писал в блоге о разработке chm-справки для своих Delphi-программ. Сегодня рассмотрим те возможности, которые предоставляет нам Lazarus для разработки справочной системы программы. В целом, поработав некоторое время в различных операционных системах невольно приходит на ум мысль вообще забыть про всякого рода chm, hlp и прочие файлы справок, а сделать простую справку из набора html-файлов, избавив себя тем самым от головной боли типа “А запуститься справка на том компьютере? А на этом?”, если нет, то “Какой формат справки сделать?” и т.д.

С одной стороны простые html-файлы значительно проигрывают в удобстве той же справке сделанной в виде chm – нет удобного поиска, индекса и т.д. и т.п. Но с другой стороны – нет проблем с запуском. И как раз для работы с HTML-справкой в LCL (Lazarus Component Library) есть два довольно простых компонента:THTMLHelpDatabase и THTMLBrowserHelpViewer. Первый предназначен для хранения информации по справочной системы, а второй — для её (информации) представления пользователю.

В начале рассмотрим довольно простой пример как быстро и без особых хлопот внедрить справочную систему в программу, созданную в Lazarus.

1. Подготовка справки

 

В принципе материал этой части статьи больше относится к работе с HTML, чем к Lazarus и FreePascal. Все, что от Вас требуется – это создать в директории с Вашим проектом ещё одну, например, с названием help и в этой директории разместить все html-файлы справочной системы. Что содержит справка – сейчас совершенно не важно.

2. Работа с THTMLHelpDataBase

 

Компонент THTMLHelpDataBase управляет содержимым. В качестве содержимого может выступать как набор HTML-файлов (как в нашем случае) так и XML-файлы, созданные утилитой fpdoc или chm-файлы.

THTMLHelpDataBase имеет всего 5 свойств из которых 2 (Name и Tag) не требуют от нас какого-либо пристального изучения – про них мы и так знаем. Три остальных – это:

AutoRegister: boolean – если значение этого свойства True, то справочная система создается автоматически и отпадает необходимость впоследствии выполнять метод RegisterSelf для создания необходимых элементов справочной системы.

BaseURL: string – путь к файлам справочной системы. В нашем путь можно задавать как относительно директории приложения, например, так: file://help/, так и задавать абсолютный пусть, например, C:\myprog\help. Так же, можно указывать и URL’ы.

KeywordPrefix: string – определяет с какой подстроки должны начинаться ключевые слова (свойство HelpKeyword компонентов).

Теперь создадим новое приложение, разместим на форме компонент THTMLHelpDataBase и установим для него следующие свойства:

AutoRegister = true

BaseURL = ‘file://help/’

KeywordPrefix = ‘help/’

Сохраним проект и в директории с проектом создадим ещё одну с названием help в которую поместим несколько html-файлов, которые будем отображать в зависимости от запросов пользователя.

3. Работа с THTMLBrowserHelpView.

 

По большому счёту необходимость использования этого компонента может потребоваться только для того, чтобы сократить время на разработку и буквально в два клика мышкой создать просмотрщик HTML-файлов, основанный на работе с Web-браузером, установленным в системе. При желании, можно обойтись и без этого компонента, создав свой просмотрщик на основе базового класса THelpViwer. Но так как сегодня мы рассматриваем способ быстрого создания справочной системы, то воспользуемся этим компонентом.

У THTMLBrowserHelpView определены следующие свойства:

AutoRegister: boolean  — как и в случае с предыдущим компонентом, если это свойство равно True, то просмотрщик автоматически регистрируется в системе.

BrowserParams: string – параметры командной строки для браузера. По умолчанию свойство равно %s. Т.е. это означает, что при запуске браузера ему будет передаваться в параметрах строка – URL или путь до HTML-файла.

BrowserPath: string – путь до исполняемого файла браузера. Вообще не желательно указывать этот путь сразу же в свойствах компонента, т.к., сами понимаете, браузер может быть установлен и не ам где Вы ожидаете его увидеть на компьютере пользователя. Поэтому к этому свойству мы ещё вернемся.

Размещаем компонент THTMLBrowserHelpView на форме нашего приложения и устанавливаем свойство AutoRegister равным True. И теперь займемся работой со свойством BrowserPath. Вообще-то у компонента определен один замечательный метод:

FindDefaultBrowser(out Browser, Params: string);

Который возвращает путь и параметры запуска браузера по умолчанию. Но вот сейчас его попробовал использовать и метод возвращает в browser пустую строку. Раньше работал :) Не работает и бог с ним, воспользуемся более грубым, но тем, не менее рабочим способом. Если на компьютере используется ОС Windows, то в BrowserPath необходимо указать путь до rundll32.exe, например:

C:/windows/system32/rundll32.exe

а в параметрах следующую строку:

url.dll,FileProtocolHandler %s

Всё, что по большому счёту необходимо – это определить путь до Windows. В случае с Ubuntu (Linux) строка для BrowserPath может выглядеть как:

usr/bin/xdg-open

а в BrowserParams:

%s

Теперь вне зависимости от того сколько браузеров есть у пользователя на компьютере все HTML-файлы справки будут запускаться в браузере по умолчанию.

И остается только продемонстрировать как работает наша простая справочная система. Для этого достаточно установить следующие свойства главной формы:

HelpType = htKeyword

HelpKeyword = ‘help/index.html’

Теперь запустите приложение и нажмите F1 – в браузере откроется страничка Index.html (если она у Вас, конечно была в директории help). Аналогичным образом можно настроить и показ справки для других компонентов, расположенных на формах Вашего приложения.

Так, буквально за пять минут мы создали с вами простейшую справочную систему для приложения. Как я уже сказал в начале, эта система не лишена некоторых недостатков, но, для первого раза сойдет :).

5 1 голос
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
1 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
s-r-grass
s-r-grass
14/03/2017 22:38

Нифига не работает, лучше написал бы какое событие для кнопки сделать, а вообще в папке с лазарус есть htmlhelp_ipro, в examples. Там пиздатая справочная система.