<<
>>

Подключение к приложению справочных файлов формата WinHelp

Все визуальные компоненты Delphi и класс TApplication обладают рядом свойств, обеспечивающих их взаимодействие со справочной системой WinHelp. Поэтому при использовании справки в формате WinHelp подключение справочных фай­лов обычно сводится к установке значений свойств объекта Application и визуаль­ных компонентов.

1. Укажите имя файла справки, с которым будет взаимодействовать приложение. Имя hlp-файла задается с помощью свойства HelpFile объекта Application. Для этого используется окно диалога Options, открывающееся после выбора коман­ды Project ► Options в главном меню Delphi. В этом окне перейдите на вкладку Application и укажите имя файла справки в поле Help file (рис. 16.26). После это­го в файле проекта (текст которого можно открыть в редакторе кода с помощью команды Project ► View Source) появится следующая строка:

Application.HelpFile := ’TEST.HLP':

ПРИМЕЧАНИЕ------------------------------------------------------------------------------

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

Рис. 16.26. Подключение файла справки к приложению

Рассмотренным способом задается файл справки сразу для всего приложения. Можно также связать файл справки только с одной формой приложения, для чего используется свойство HelpFile формы (класса TForm). Значение этого свой­ства изменяется в инспекторе объектов. Таким образом, можно связывать раз­ные формы с разными файлами справки. Если значение свойства HelpFile фор­мы не задано, то форма наследует его от объекта Application.

1. На втором шаге следует связать визуальные компоненты с соответствующими им темами в файле справки.

Для этого используется свойство HelpContext, кото­рым обладают все визуальные компоненты Delphi, способные иметь фокус вво­да. В данном свойстве с помощью инспектора объектов следует указать число­вой идентификатор темы, с которой должен быть связан данный компонент.

После выполнения указанных действий мы получим работоспособную контекст­ную справку. При нажатии пользователем клавиши Fl будет открываться окно справочной системы WinHelp, в котором отображается тема, соответствующая свойству HelpContext компонента, имеющего фокус ввода.

Однако наряду с этим обычно также требуется обеспечить возможность обраще­ния пользователя сразу к содержанию или к указателю справочного файла посред­ством команд меню. Кроме того, в ряде случаев справочную информацию требуется выводить не в окне программы WinHelp, а во всплывающем окне. Для обеспече­ния всех этих возможностей следует использовать методы и события объекта Application, предназначенные для взаимодействия со справочной системой. Класс TApplication включает три метода, используемые для вызова справки, function HelpCommand (Command: Word: Data: Longint): Boolean

Вызывает команду WinHelp API, указанную в параметре Command, передавая ей параметр Data.

function HelpContext (Context: THelpContext): Boolean

Открывает окно программы WinHelp, в котором выводит тему с номером, со­ответствующим параметру Context, function HelpJump (const JumpID: string): Boolean

Аналогичен предыдущему методу, только тема задается не числовым иденти­фикатором, а строковым.

Наиболее универсальным является метод HelpCommand, обеспечивающий доступ ко всем командам WinHelp API. Таких команд около 20, поэтому мы рассмотрим только основные.

? HELP_C0MMAND — запускает макрос WinHelp. Параметр Data задает адрес стро­ки, содержащей текст макроса. В строке можно задавать несколько макросов, разделенных точкой с запятой.

? HELP_C0NTENTS — открывает окно с содержанием справочной системы. Параметр Data, должен быть равен 0.

? Н ELP_C0NTEXT — открывает окно WinHelp с темой, соответствующей параметру Data.

? HELP_C0NTEXTP0PUP — отображает тему, номер которой задан параметром Data, во всплывающем окне.

? HELP_INDEX — отображает предметный указатель справочной системы. Параметр Data в этом случае задается равным 0.

При любой попытке обращения к справочной системе из приложения генерирует­ся событие On Help объекта Application. Метод-обработчик этого события имеет сле­дующий формат:

function (Command: Word: Data: Longint; \ var CallHelp: Boolean): Boolean

Здесь Command — команда API WinHelp; Data — параметр команды; CallHelp — па­раметр, указывающий, вызывать справочную систему или нет.

Сообщение OnHelp можно использовать для изменения способа отображения темы сообщения. Например, иногда бывает необходимо выводить контекстную справку во всплывающем окне. Однако по умолчанию при нажатии клавиши F1 вызывает­ся команда HELP_CONTEXT WinHelp API, которая отображает тему в обычном окне. В этом случае следует воспользоваться обработчиком события OnHelp.

Если задать его следующим образом, то темы с числовыми идентификаторами, лежащими в диапазоне от 1 до 10, будут отображаться во всплывающем окне:

function TForml.ApplicationEventslHelp(Command: Word:

Data': Integer: var CallHelp: Boolean): Boolean; const

F : boolean = true; begin

case Data of 1..10 :

if F then begin F:=false:

Cal 1 Hel p:—false:

Appli cati on.HelpCommand(HELP_CONTEXTPOPUP.Data): end

else F:=true:

. end:

result:=true;

end:

Обратите внимание на использование в приведенном примере дополнительной переменной F. Если бы мы задали в обработчике OnHelp следующий код, то при выполнении программы это привело бы к ошибке переполнения стека:

case Data of 1..10 : begin

Call Help: =false;

Application.HelpCommand(HELP_CONTEXTPOPUP,Data); end end;

Дело в том, что вызов метода HelpCommand генерирует событие OnHelp, поэтому этот фрагмент кода ведет к бесконечной рекурсии.

Использование дополнительной переменной-флага приводит к тому, что при од­ном обращении к контекстной справке (нажатии пользователем клавиши F1) со­бытие OnHelp будет генерироваться только дважды.

? Первый раз событие OnHelp генерируется как реакция на нажатие клавиши F1. При этом выполняются операторы, расположенные в секции then оператора if, то есть вызывается метод HelpCommand, а значение переменной F устанавлива­ется равным false.

? Второе обращение к обработчику OnHelp происходит вследствие генерации события OnHelp методом HelpCommand. Однако поскольку значение перемен-

ной-флага в этот момент равно false, то выполняться будут операторы сек­ции else оператора if, то есть переменной F будет присвоено значение true, что при повторном обращении к справке обеспечит вывод темы во всплыва­ющем окне.

<< | >>
Источник: Избачков Ю. С., Петров В. Н.. Информационные системы. 2006

Еще по теме Подключение к приложению справочных файлов формата WinHelp:

  1. 9. ИНФОРМАЦИОННО-СПРАВОЧНОЕ ОБЕСПЕЧЕНИЕ КРИМИНАЛИСТИЧЕСКОЙ ДЕЯТЕЛЬНОСТИ
  2. Жанры и форматы
  3. ЗАБЫТЫЕ ФОРМАТЫ
  4. 3.5. Подключение к сети
  5. Идеологические, культурно-просветительские, рекреативные, рекламно-справочные и другие функции СМИ.
  6. 1.7. Порядок подключения к сети
  7. 4.4. Подключение к сети
  8. Прием подключения неречевых средств.
  9. Прием подключения неречевых средств.
  10. ПРИЛОЖЕНИЯ
  11. Приложения
  12. ПРИЛОЖЕНИЕ
  13. Приложение
  14. Приложение 1.
  15. Приложение 3.