Шаблон  Button_Help        

B_Help.gif (221 bytes)  Это 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.  

Hosted by uCoz