Создание справочной
системы

В этой главе мы рассмотрим принципы, по которым подключается файл справки к вашему приложению.

CLX не обеспечивает прямую поддержку отображения файла справки. Он обеспечивает механизм, с помощью которого запросы об отображении справки вызывают внешние программы, отображающие справочные файлы (такие, как Man, Info или HyperHelp). Кроме того, для работы этого механизма на разработчика возлагается задача по созданию класса, который поддерживает интерфейс ICustomHelpViewer (и, по желанию, один из интерфейсов-потомков ICustomHelpViewer). После чего необходимо зарегистрировать экземпляр данного класса с помощью глобального менеджера помощи (global Help Manager).

Менеджер помощи содержит список всех зарегистрированных в системе программ для отображения файлов помощи и передает ему запросы вашего приложения. Запросы передаются в две фазы:

Итак, CLX обеспечивает связь между вашим приложением и программой для просмотра файлов справки с помощью интерфейсов. Эти интерфейсы описаны в файле HelpIntfs.pas, который также содержит код, реализующий менеджер помощи (см. Приложение 1):

Интерфейс ICustomHelpViewer содержит три типа методов:

Интерфейс ICustomHelpViewer обеспечивает три функции, которые используются для связи менеджера помощи и системной информации:

Интерфейс IHelpManager позволяет просмотрщику помощи передавать четыре запроса:

Рассмотрим методы, позволяющие выполнить все вышеописанное:

Запросы на отображение разделов справки обычно идут по ключевому слову, в этом случае просмотрщик помощи обеспечивает помощь, основанную на строке текста. Второй вариант основан на контексте справки, в этом случае просмотрщик обеспечивает помощь, основанную на числовом иденти-фикат.оре. Последний вариант является обычным вариантом предоставления справки в приложениях, работающих в среде Windows и использующих систему WinHelp. Несмотря на то, что CLX поддерживает данный вариант, он не рекомендуется, т. к. большинство справочных систем Linux не поддерживают его.

Интерфейс ICustomHelpViewer необходим для обеспечения поддержки помощи по ключевому слову. Интерфейс IExtendedHelpViewer необходим для поддержки контекстно-зависимой помощи.

Интерфейс ICustomHelpViewer предоставляет три метода для работы со справкой по ключевому слову:

Интерфейс ICustomHelpViewer обеспечивает два метода, связанных с отображением содержания файла справки:

Теоретически их работа схожа с работой методов просмотра помощи по ключевому слову: менеджер помощи сначала запрашивает все просмотрщики с помощью метода ICustomHelpViewer.CanShowTableOfContents: Boolean;, затем вызывает конкретную программу-просмотрщик с помощью вызова метода ICustomHelpViewer.ShowTableOfContents.

Для того чтобы менеджер помощи мог работать с интерфейсами ICustomHelpViewer, IExtendedHelpViewer, ISpecialWinHelpViewer и IhelpSelector, необходимо осуществить регистрацию объекта справочной системы.

Модуль, который содержит описание данного объекта, должен иметь в списке используемых модулей модули HelpIntfs и QForms. Экземпляр объекта должен быть объявлен в секции var раздела реализации (implementing) модуля.

Вместе со средой Kylix поставляются файлы, помогающие создавать систему помощи для ваших приложений. Эти файлы находятся в каталоге

/kylix/demos/helpviewers/.

Здесь располагаются три основных файла:

Прежде чем рассмотреть эти три файла, отметим, что справочная система CLX имеет подключаемую архитектуру, которая работает через интерфейс IHelpSystem.

Модуль WinHelpViewer обеспечивает связь между приложением и HyperHelp (эмулятором WinHelp под Linux).

Модуль ManViewer обеспечивает связь между приложением и системой Linux man.

Пакет HelpViewers представляет собой пример пакета, который содержит модуль ManViewer. Этот пакет зарегистрирован как пакет времени разработки в IDE и обеспечивает связь IDE со страницами man. Данный пакет не может быть использован во время работы приложения. Листинги всех трех файлов приводятся в конце книги, в Приложении 2.

Hosted by uCoz