Подключаем к приложению справку в формате .CHM

 

Я думаю не надо доказывать, что значит для серьезного приложения справочная система ? Без нее продукт вообще нельзя позиционировать продукт как коммерческий...

Хорошая интерактивная дружелюбная справка имеет для пользователя решающее значение при выборе продукта! Также в справке можно подробно расписать множество нюансов и подсказок по определенному действию в программе, что опять же позволит пользователям в полной мере использовать все возможности Вашего приложения, т.е. Ваше приложение становится более эффективным в руках просветленных юзеров и легко выигрывает тендер в честной конкурентной борьбе ;).

Сначала надо создать справочную систему ;) Лично я использую для подготовки Help & Manual 3 версии (не бесплатный!). в принципе, технически ничего сложного в подготовке справочной системы нет. Пишешь как в Word'e новые страницы, объединяешь их в папки, подпапки. Гораздо сложнее наполнить справку интеллектуальной составляющей ;)

Да, еще аккуратно нумеровать Help Contex Numbers, по которым можно будет впоследствии вызывать нужную страницу (мы же хотим не просто открывать файл справки, а сразу выбирать нужное место в справке, соответственно выполняемому действию или открытой форме, что вполне логично).

В Help & Manual имеются различные заготовки, которые нужно только заполнить своим содержанием и, считайте, справка к программе готова! Маленький секрет - зайдите в свойства проекта и выставьте русские настройки, иначе после компиляции получите кракозябры ;) В Интернете имеется русификация с лекарством для этого пакета, хорошая русская справка о программе, так, что думаю никаких проблем при подготовке стандартной справочной системы возникнуть не должно.

С другой стороны, справку можно готовить в любом текстовом редакторе, а потом скомпилировать бесплатным компилятором от Microsoft (htmlhelp.exe). Но этот путь весьма трудоемок - гораздо легче использовать специализированные пакеты.

Ну все, будем считать, что справка у нас написана, Help Contex Numbers расставлены, и файл .CHM успешно скомпилирован.

создадим в программе модуль mdlHelp и вставим в него этот код:

Option Compare Database
Option Explicit

Private Const HH_DISPLAY_TOPIC = &H0
Private Const HH_HELP_CONTEXT = &HF

Private Declare Function HtmlHelp Lib "Hhctrl.ocx" Alias "HtmlHelpA" _
(ByVal hWndCaller As Long, ByVal pszFile As String, ByVal uCommand As Long, _
ByVal dwData As Long) As Long

Private Function LaunchHTMLHelp(HelpFile As String, Optional WindowHandle As Long, _
Optional Topic As Long) As Boolean

Dim lngReturn As Long

On Error Resume Next

If VBA.Len(VBA.Dir$(HelpFile)) > 0 Then
    If Topic = 0 Then
        lngReturn = HtmlHelp(WindowHandle, HelpFile, HH_DISPLAY_TOPIC, 0)
    Else
        lngReturn = HtmlHelp(WindowHandle, HelpFile, HH_HELP_CONTEXT, Topic)
    End If
    LaunchHTMLHelp = VBA.CBool(lngReturn)
End If

End Function

Public Function getHelp(intTopic As Long) As Boolean
Dim strAppPath As String

On Error Resume Next

strAppPath = Application.CurrentProject.Path & "\"
getHelp = LaunchHTMLHelp(strAppPath & "AddOns\Справка_УНПДД.chm", 0, intTopic)

End Function
 

в принципе это все, что нужно для нормальной работы со справкой в формате .CHM ;)

вызываем из любого места программы так:

getHelp (100)

' где 100 и есть то самый Help Contex Numbers, указанный при подготовке нужной страницы

' справка откроется и автоматически выберется страница с Help Contex Numbers равным 100

если хотим просто показать файл справки с начальной страницы:

getHelp (0)

Так как это функция, то вызывать ее необязательно из программного кода модуля формы - достаточно просто написать в событии подходящего контрола "Нажатие кнопки"  =getHelp(100)

Автор кода Jamie Czernik. Я взял на себя смелость упростить код без видимой потери функциональности.

Лично мое мнение после практической работы по созданию справочной системы - для Access оправдано применение справки в формате WinHelp. Это позволяет обойтись вообще без какого-либо кодирования (используем клавишу F1 и кнопку контекстной справки - знак вопроса на панели заголовка формы). Точно также при создании справки аккуратно расставляем Help Contex Numbers, а затем в свойствах форм и контролов указываем их в качестве идентификаторов справки для вызова конкретной страницы. Help&Manual3 прекрасно компилирует справку и в .HLP формате, который все еще является "родным" для Access.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=7534