Это
control-шаблон, который реализует кнопку вызова
помощи в подсистеме помощи основанной на
HTML-файлах .
#!
=================================================================================
#CONTROL (Button_Help, 'Кнопка вызова странички Помощи')
CONTROLS
BUTTON,AT(,,16,16),MSG('Вызов
помощи'),TIP('Помощь'),USE(?Help),ICON('HELP.ICO')
END
#! =================================================================================
#DISPLAY ('')
#DISPLAY ('Кнопка вызова Помощи')
#DISPLAY ('')
#DISPLAY ('')
#DISPLAY ('Имя файла помощи (htm):')
#PROMPT ('Файл помощи:', @s26), %HelpFileName, REQ, DEFAULT(%Procedure)
#DISPLAY ('')
#!
#ATSTART
#DECLARE (%ButtonHelp)
#FOR (%Control), WHERE(%ControlInstance = %ActiveTemplateInstance)
#SET (%ButtonHelp, %Control)
#ENDFOR
#ENDAT
#AT (%PrepareAlerts)
alias( F1Key, AltShiftO )
alert( AltShiftO )
#ENDAT
#!
#! ------ После нажатия кнопки ------
#AT (%ControlPostEventHandling, '?Help', 'Accepted')
CallHelp( '%HelpFileName' )
#ENDAT
#!
#! ---- Обработка горячих клавиш -----
#AT (%WindowEventHandling, 'PreAlertKey')
case keycode()
of AltShiftO
post( event:Accepted, ?Help )
.
#ENDAT
Шаблон запрашивает от разработчика имя файла
странички помощи для данного окна. Файл
должен иметь расширение '.htm'.
Расширение имени файла указывать не
обязательно. Путь к файлу также указывать не
нужно. Процедура CallHelp
, которая используется для вывода странички
пользователю, использует путь к файлам помощи,
который содержится в глобальной переменной G:HelpPath
(смотрите шаблон InitGlob).
Если страничка помощи находится в
подкаталоге внутри каталога G:HelpPath, то
имя этого подкаталога нужно указать вместе с
именем файла странички. Например, страничка Store.htm
находится в подкаталоге c:\Comp\Help\Sprav. В
переменной G:HelpPath находится строка 'c:\Comp\Help\'.
Тогда для вызова этой странички нужно
указать имя файла 'Sprav/Store.htm'.
В секции #AT (%PrepareAlerts)
сначала объявляется алиас для "горячей
клавиши" F1 так как саму клавишу F1
перехватывает Clarion, и не дает ее использовать в
своих целях. В качестве "заменителя" F1
я использую достаточно редкую комбинацию клавиш <Alt>+<Shift>+<O>.
Далее в секции #AT (%WindowEventHandling, 'PreAlertKey')
по нажатию на клавишу-эквивалент клавиши F1
производится "нажатие" на кнопку ?Help.