Підключаємо до додатка довідку у форматі

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

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

Спочатку треба створити довідкову систему;) Особисто я використовую для підготовки Help Manual 3 версії (не безкоштовний!). в принципі, технічно нічого складного в підготовці довідкової системи немає. Пишеш як в Word'e нові сторінки, об'єднуєш їх в папки, підпапки. Набагато складніше наповнити довідку інтелектуальної складової;)

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

Ну все, будемо вважати, що довідка у нас написана, 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

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)

в принципі це все, що потрібно для нормальної роботи з довідкою в форматі .CHM;)

викликаємо з будь-якого місця програми так:

'Де 100 і є те самий Help Contex Numbers, вказаний при підготовці потрібної сторінки

'Довідку буде відкрито і автоматично вибереться сторінка з Help Contex Numbers рівним 100

якщо хочемо просто показати файл довідки з початкової сторінки:

Так як це функція, то викликати її необов'язково з програмного коду модуля форми - досить просто написати в подію відповідного контрола "Натискання кнопки" = getHelp (100)

Особисто моя думка після практичної роботи по створенню довідкової системи - для Access виправдане застосування довідки у форматі WinHelp. Це дозволяє обійтися взагалі без будь-якого кодування (використовуємо клавішу F1 і кнопку контекстної довідки - знак питання на панелі заголовка форми). Точно також при створенні довідки акуратно розставляємо Help Contex Numbers, а потім у властивостях форм і контролів вказуємо їх в якості ідентифікаторів довідки для виклику конкретної сторінки. HelpManual3 прекрасно компілює довідку і в .HLP форматі, який все ще є "рідним" для Access.