Подключение к приложению справочных файлов формата WinHelp
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, что при повторном обращении к справке обеспечит вывод темы во всплывающем окне.
Еще по теме Подключение к приложению справочных файлов формата WinHelp:
- 9. ИНФОРМАЦИОННО-СПРАВОЧНОЕ ОБЕСПЕЧЕНИЕ КРИМИНАЛИСТИЧЕСКОЙ ДЕЯТЕЛЬНОСТИ
- Жанры и форматы
- ЗАБЫТЫЕ ФОРМАТЫ
- 3.5. Подключение к сети
- Идеологические, культурно-просветительские, рекреативные, рекламно-справочные и другие функции СМИ.
- 1.7. Порядок подключения к сети
- 4.4. Подключение к сети
- Прием подключения неречевых средств.
- Прием подключения неречевых средств.
- ПРИЛОЖЕНИЯ
- Приложения
- ПРИЛОЖЕНИЕ
- Приложение
- Приложение 1.
- Приложение 3.