Создание справочной системы
Создание полнотекстового поиска
Индексы могут существенно облегчить пользователю поиск нужной справки, однако всё же полнотекстовый поиск для этого используют чаще. Полнотекстовый поиск - это когда пользователь вписывает искомое слово/фразу, а справочная система ищет это слово/фразу по всей справке. Индексы при этом не используются, то есть, найти можно любое слово, не только проиндексированное.
За удобство использования полнотекстового поиска приходится платить некоторым замедлением поиска, однако на современных ПК это замедление почти незаметно.
Включить полнотекстовый поиск очень просто. В окне HTML Help Workshop откройте вкладку "Project". Самая верхняя кнопка левой боковой панели инструментов - "Change project options" (Изменить параметры проекта). Нажмите её, перейдите на вкладу "Compiler" и включите флажок "Compile full-text search information":
Кроме того, стоит прямо сейчас указать, какая страница справки будет открываться по умолчанию. Для этого перейдите на вкладку "General", и в поле "Default file" выберите нужный файл. Я, например, выбрал Naznachenie.html. Не забудьте нажать кнопку "ОК", чтобы подтвердить изменения.
Создание вкладки "Избранное"
Вкладка "Избранное" в справочной системе может послужить достойным завершающим штрихом. В эту вкладку пользователь будет иметь возможность добавлять те разделы справки, к которым чаще всего обращается. Создается эта вкладка тоже достаточно просто.
На вкладке "Project" HTML Help Workshop, на левой боковой панели инструментов, третья кнопка сверху - кнопка "Add/Modify window definitions" (Добавить/Изменить определение окна). Справка ведь выводится в окне, мы своё окно пока не создавали, пользовались тем, что создается по умолчанию, а потому к настройкам окна доступа не имеем. Вот нам и нужно создать своё окно справки. Нажмите на эту кнопку. Вам будет предложено ввести имя нового окна. Имя может быть любое, например, Favorites.
Как только вы введете имя и нажмете "ОК", откроется окно Window Types с настройками нашего нового окна. Для добавления вкладки "Избранное" нам нужно перейти на вкладку "Navigation Pane" и включить флажок "Favorites tab":
Кроме того, перейдите на вкладку "Files" и в поле "Default" также укажите файл справки, который будет открываться по умолчанию.
Нажмите "ОК", и на этом наша работа с проектом завершена. Не забудьте сохранить проект командой меню "File -> Save project" или кнопкой с изображением дискетки.
Компиляция справки
Наш проект закончен, осталось скомпилировать саму справку - файл CodeBook.chm. Делается это очень просто: выберите команду главного меню "File -> Compile…". Вам будет предложено выбрать файл проекта, для которого компилируется справка, по умолчанию будет открыт наш проект
C:\Education\18-01\Help\CodeBook.hhp
Это нам и нужно. Рекомендую включить флажок "Save all files before compiling" (Сохранить все файлы перед компиляцией). После чего можете нажать кнопку "Compile".
Если вы всё сделали правильно, в правой части окна выйдет отчет о проделанной компиляции:
Как видите, ошибок в отчете нет, указано количество тем, локальных и Интернет-ссылок, изображений. Правда, не всегда эти количества соответствуют действительности, но тут уж ничего не поделать.
Также указано, что был создан файл CodeBook.chm размером 99,386 байт. На этом работа с проектом завершена, можете закрыть HTML Help Workshop.
Затем можете в Проводником или файловым менеджером открыть папку Help с проектом справки, и запустить файл CodeBook.chm прямо оттуда:
Как видите, справка открывается, на ней присутствуют все 4 вкладки: "Содержание", "Указатель", "Поиск" и "Избранное". Можете поэкспериментировать с этими вкладками.
Есть пару замечаний. Первое: для показа этой справки система задействует инструменты программы MS Internet Explorer, но на каждой Windows эта программа установлена, так что беспокоиться тут нечего. Второе: справка самостоятельно запоминает последнее положение и размеры, которые установил пользователь. При последующем запуске справки эти положение и размеры будут восстановлены, что сильно облегчает нам работу.
Включение справки в проект Lazarus
Надо сказать, механизм подключения справочной системы к проекту в Lazarus ещё сыроват, и информации по этому вопросу немного. Одни советуют использовать несколько десятков строк кода, другие говорят, что это не помогает… В официальной документации (на английском языке) Lazarus советуют использовать компоненты THTMLHelpDatabase и THTMLBrowserHelpViewer с вкладки System. В качестве примера предлагают проект
C:\lazarus\examples\helphtml
Этот пример, почему то, выводит справку в браузере, установленном в системе по умолчанию. Затем мне всё же удалось запустить справку, однако справка открылась в окне просмотра Lazarus, а не системы. Это окно, как оказалось, с кириллицей "не дружит" - вместо русских букв выходили прямоугольнички.
В конце концов, мне удалось найти достаточно простой способ подключить к проекту справочную систему, о нем я вам сейчас и расскажу.
Прежде всего, скопируйте файл справки CodeBook.chm в папку с проектом программы. Можно было бы оставить его и в папке Help, особой разницы, откуда запускать справочник нет. Однако когда все файлы программы находятся в одной папке, то эту программу проще подготовить к распространению.
Далее, откройте проект программы в Lazarus - запустите файл CodeBook.lpi из папки с проектом, у меня это C:\Education\18-01. Откроется Lazarus с проектом программы. В Редакторе кода убедитесь, что открыта вкладка "Main" - вкладка главного окна. Перейдите на редактор форм. Откройте редактор главного меню (дважды щелкните по компоненту MainMenu1).
Нам нужно добавить еще один элемент в раздел меню "Справка". Выделите этот раздел, выделите его элемент "О программе", щелкните правой кнопкой мыши и выберите команду "Вставить новый пункт (перед)". Появится новый пункт меню. Выделите его, свойство Name переименуйте в HelpHelp, в свойстве Caption напишите Справка, а в свойстве ShortCut выберите горячую клавишу <F1>.
Сгенерируйте для этого пункта меню событие OnClick, код которого будет довольно простой:
procedure TfMain.HelpHelpClick(Sender: TObject); begin //вызываем справку: WinExec('hh.exe CodeBook.chm',SW_SHOW); end;
Процедура WinExec вызывает внешнее системное приложение hh.exe (системный просмотрщик справок) с загруженным файлом справки CodeBook.chm. Однако WinExec сразу же работать не будет - эта процедура прописана в модуле Windows, который нужно добавить в раздел uses. Добавьте, сохраните проект, перекомпилируйте его и запустите. Нажмите <F1> или выберите команду меню "Справка -> Справка" - наша справка должна загрузиться.
Если вы захотите распространять эту программу, вам для этого будет достаточно двух файлов: CodeBook.exe (сама программа) и CodeBook.chm (справка).