Сайт Ивана Чередниченко | Создание и использование справочных файлов

Создание и использование справочных файлов

Данная статья использует материалы книги С. Брауна "Visual Basic 5 с самого начала" (С. Браун. Visual Basic 5 с самого начала - СПб: Питер, 1998 - 320 с.: ил.), а также собственный опыт автора.

Для начала хочу ответить на вопрос "Зачем эта статья?". Во-первых, практически отсутствует информация по созданию справочных документов (будь то форматы *.hlp, *.chm, *.pdf и т.д.). А ведь для программиста - любителя такая информация является очень важной: как создать документ, как привязать его к программе и т.д. Но такая информация в большинстве случаев отсутствует. Автору удалось найти такую информацию в вышеуказанной книге, на основе которой и будет строиться данная статья. Во-вторых, создание справки в формате HLP трудоемкий процесс, которые будет рассмотрен подробно в данной статье. Создать справку без дополнительной теоритической наглядной базы будет сложно. Именно поэтому написана данная статья.

Книга, которая лежит в основе данной публикации, посвящена программированию в среде Microsoft Visual Basic, поэтому в дополнение, автор расскажет как привязывать справку к программам, написанным с помощью Borland Delphi 7.

Создание HLP-справки

Использование справочных файлов в приложениях

В состав готового приложения должна входить электронная справка. Она становится средством "первой помощи" [а иногда и единственным средством - прим. автора] в тех случаях, когда пользователю что-то непонятно или он нуждается в инструкциях. Справочный файл должен быть тщательно проработан и интегрирован с основным приложением. Контекстная справка обеспечивает вызов справочной системы практически из любого элемента любой формы, а также выводит справочную информацию по текущему элементу. Создадим простейший справочный файл, в котором объясняется... как создавать справочный файл. Пользуйтесь им, когда в будущем вам придется работать над собственной справочной системой.

Существует немало коммерческих и условно-бесплатных программ, предназначенных для создания справочных файлов, однако в этом уроке воспользуемся инструментами Visual Basic [обладатели Borland Delphi 7 не отчайвайтесь, создать HLP-файл можно и средствами Delphi - примечание автора статьи].

Для создания справочного файла вам понадобится текстовой редактор, который позволяет создавать сноски и сохранять файлы в формате RTF (Rich Text Format). Многие разработчики применяют для этой цели Word for Windows, мы тоже воспользуемся этим редактором. Если у вас нет Word, работайте в другом редакторе. Методику создания справочных файлов нетрудно понять и приспособить для вашего любимого редактора. Вам также понадобится компилятор, генерирующий HLP-файл по исходному файлу в формате RTF (а также по файлам растровых изображений, если они используются). Visual Basic обладает собственным компилятором справки. Мы воспользуемся программой Help Workshop, находящейся на компакт-диске Visual Basic.

Для паскалистов, Borland Delphi 7 также предоставляет возможность создавать HLP-файлы. Для этого вам необходимо открыть следующий файл help/tools/hcw.exe директории, в которой находится Delphi 7. Единственным минусом является то, что данная программа создана в 1997 году (если смотреть Help|Version...), но это не означает, что программа лишена каких-либо возможностей по созданию HLP-справки.

Создание первого справочного файла

Чтобы создать справочный файл, необходимо сначала подготовить файлы содержания, разделов и проекта. Файл содержания хранится в формате ASCII и определяет структуру и внешний вид вкладки Contents. Файл разделов содержит текст и графику, из которых складывается итоговый документ. Наконец, файл проекта объединяет файлы разделов и содержания, а также все прочие файлы, входящие в проект. Он же определяет макет, внешний вид и размещение окна справки при запуске.

Проектирование и создание файла содержания

Многие руководства советуют начинать с файла разделов, автор книги предпочитает сначала задавать общую структуру справочной системы в файле содержания. Help Workshop отображает графическое представление структуры разделов по аналогии с редактором меню Visual Basic IDE. Во время работы с Help Workshop список разделов выглядит точно также, как и обычная вкладка Contents в справочной системе приложения. Это заметно облегчает работу над проектом справочного файла.

При проектировании файла содержания стоит записать идентификаторы и заголовки разделов. Идентификаторы разделов используются компилятором справки для "стыковки" справочного файла с приложением. Они могут пригодиться при создании сносок в файле разделов. Начнем с файла содержания:

  • Скопируйте Help Workshop из подкаталоге \Tools на компакт-диске Visual Basic на жесткий диске (если это не было сделано раньше).
  • Запустите Help Workshop.
  • Создайте новый файл содержания командой File|New. Выберите из списка строку Help Contents и нажмите на кнопку OK.
  • Первое, что необходимо сделать - задать имя справочного файла. Введите в поле Default Filename строку Skill11.hlp.
  • В поле Default Title введите строку Создание справочного файла.
  • Создание структуры файлы начинается с добавления в список первого заголовка. Нажмите кнопку Add Above и установите переключатель Heading. В поле Title введите строку Создание справочного файла.
  • Нажмите кнопку Add Below, чтобы добавить следующий заголовок раздела ниже текущего. Установите переключатель Heading и введите в поле Title строку Создание файла содержания. Завершив ввод, нажмите кнопку OK.
  • Нажмите кнопку Move Right, чтобы создать в заголовке отступ. По аналогии с редактором меню Visual Basic, отступ означает, что выделенный объект находится на более низком уровне иерархии, чем объект, расположенный над ним. Теперь раздел "Создание файла содержания" является подразделом по отношению к разделу "Создание справочного файла".
  • Снова нажмите кнопку Add Below, но на этот раз установите переключатель Topic. В поле Title введите строку Создать файл содержания, а в поле Topic ID - IDH_CreateContentsFile. Поля Help File и Window Type следует оставить пустыми.
  • Тем же способом добавьте следующие разделы:
    Идентификатор раздела Заголовок раздела
    IDH_AddHeadings Добавить заголовки
    IDH_AddTopics Добавить разделы
  • Добавьте очередной заголовок кнопкой Add Below. В поле Title введите строку Создание файлов разделов и нажмите кнопку OK.
  • Новый раздел не должен принадлежать разделу, расположенному над ним, поэтому нажмите кнопку Move Left, чтобы поднять его на более высокий уровень иерархии.
  • Добавьте следующие подразделы в раздел Создание файлов разделов:
    Идентификатор раздела Заголовок раздела
    IDH_WriteTopics Написать текст разделов
    IDH_AddFootnotes Добавить сноски
    IDH_SaveRTF Сохранить файл
  • Добавить последний подзаголовок - введите в поле Title строку Создание файла проекта и нажмите кнопку OK.
  • Уменьшите отступ кнопкой Move Left. Созданный раздел поднимается на более высокий уровень иерархии.
  • Добавьте следующие подразделы в раздел Создание файла проекта:
    Идентификатор раздела Заголовок раздела
    IDH_CreateProjectFile Создать файл проекта
    IDH_SetOptions Задать параметры проекта
    IDH_SaveRTF Сохранить файл
    IDH_AddFiles Добавить файлы в проект
    IDH_DefineWindow Определить параметры окна
    IDH_Compile Сохранить и откомпилировать проект
    IDH_Test Протестировать полученный справочный файл
  • Сохранить файл под именем Skill11.cnt.

Первый файл содержания готов, можно приступать к файлу разделов. Надеюсь, вы не забыли записать идентификаторы и заголовки разделов - они понадобятся при создании сносок в файле разделом. Если вы не записали их, сделайте это сейчас.

Создание файла разделов

После того, как будет создан файл содержания, можно переходить к файлу разделов. Он представляет собой документ RTF (Rich Text Format) и содержит текст, графику, ссылки и макросы, которые воспроизводятся в справочном файле. В этом примере автор книги использовал Microsoft Word, но приведенные команды можно адаптировать для любого текстового редактора.

  • Запустите редактор и создайте в нем новый документ.
  • Введите в первой строке документа заголовок первого раздела: Создать файл содержания.
  • Введите на первой странице документа, под заголовком раздела, следующий текст:
    Начинать следует с файла содержания. Help Workshop обладает специальными графическими средствами, облегчающими эту задачу. Происходящее напоминает работу с редактором меню в Visual Basic - вы строите иерархический список заголовков и разделов.

    Выполните в Help Workshop команду File|New.

    Выберите строку Help Contents и нажмите кнопку OK.
  • Прежде чем обращаться к этому разделу, необходимо создать в нем сноску. Она должна располагаться в самом начале раздела. Установите курсор перед заголовком Создать файл содержания.
  • Выполните команду Вставка|Сноска, в группе Нумерация установите переключатель Другая и введите знак фунта (#).
  • Когда редактор переключится на текст сноски, введите строку IDH_CreateContentsFile - идентификатор данного раздела.
  • Теперь необходимо задать название раздела - текст, который будет отображаться при поиске в справочном файле. Установите курсор между знаком фунта и заголовком в верхней части раздела.
  • Вставьте еще одну сноску командой Вставка|Сноска, снова установите переключатель Другая и введите знак доллара ($).
  • Когда редактор переключится на текст сноски, введите строку Создать файл содержания.
  • Наконец, создайте сноску, определяющую последовательность просмотра разделов. Установите курсор между знаком доллара и текстом заголовка. Вставьте очередную сноску (Вставка|Сноска), выберите нестандартный знак сноски (Другая) и введите знак "плюс" (+).
  • В тексте сноски введите строку auto. Тем самым вы приказываете Windows Help создать в данном файле автоматическую последовательность просмотра.
  • Если вы не сделали этого ранее, оформите текст заголовка в начале раздела увеличенным шрифтом и полужирным начертанием.

Давайте остановимся и посмотрим, что мы сделали. Во-первых, мы создали заголовок - по нему пользователь определяет, о чем идет речь в данном разделе. В нашем примере раздел посвящен созданию файла содержания. Затем мы ввели основной текст раздела. На этом этапе можно создать графические изображения и ссылки (в нашем справочном файле такая возможность не используется). Если эта тема вас заинтересовала, в электронной документации по Help Workshop вы найдете более чем исчерпывающую информацию.

Наконец, мы вставили в текст несколько сносок. Они необходимо для правильной компиляции файла. В нашем примере сносок было три, однако существуют и другие сноски, используемые для других эффектов. Первая сноска определяла идентификатор раздела. После нее была добавлена сноска с названием раздела и в конце - сноска, определяющая последовательность просмотра. Если вам трудно запомнить эти символы, попробуйте рассуждать так: первой идет сноска с идентификатором, в ней используется знак фунта (#). Большинство идентификатором имеет числовое значение, и хотя о нашем этого не скажешь, обычно идентификаторы все же ассоциируются с числами. Для названия используется знак доллара ($). Разумеется, с точки зрения программиста названия является строкой, а в Visual Basic символ $ используется для обозначения строк. Наконец, сноска со знаком "плюс" (+) определяет последовательность просмотра. Достаточно вспомнить, что во многих программах символы + и - используются для перебора чисел, чтобы связать знак + с перемещением по справочному файлу.

Ниже перечислены основные правила включения сносок в разделы справки:

  • Сноски должны находится в самом начале раздела, перед текстом.
  • Сначала добавьте сноску для определения идентификатора (#), затем введите сам идектификатор. Присутствие сноски обязательно.
  • Затем добавьте сноску для названия раздела ($) и введите ее текст. Присутствие этой сноски необязательно, но желательно.
  • Добавьте сноску для последовательности просмотра (+). В ее тексте можно ввести номер или слово auto, чтобы возложить все хлопоты на компилятор.

Обязательно сохраняйте работу перед вводом нового раздела. Теперь вы знаете основные принципы использования сносок, и мы можем закончить создание справочного файла:

  • Вставьте в конец раздела "жесткий" разрыв страницы, нажав клавиши CTRL+ENTER. Перед тем как вставлять новый раздел, нужно закончить предыдущий "жестким" разрывом страницы. Благодаря этому каждый раздел будет начинаться с новой страницы.
  • Введите следующий текст:
    Добавить заголовки

    Для добавления заголовков применяются кнопки Add Above и Add Below. Когда на экране появится диалоговое окно Edit Contents Tab Entry, установите переключатель Heading, после чего введите описание заголовка.

    С помощью заголовков можно классифицировать разделы справочного файла. Например, данный файл имеет три заголовка - по одному для каждого этапа работы над справочным файлом. В каждый заголовок мы добавим разделы, описывающие отдельные операции, составляющие различные этапы.
  • Создайте следующие сноски:
    # IDH_AddHeadings
    $ Добавить заголовки
    + auto
  • Введите текст следующего раздела:
    Добавить разделы

    Для каждой темы, рассматриваемой в справочном файле, создается свой раздел. Текст, который вы набираете, является разделом.

    Чтобы добавить раздел, нажмите кнопку Add Below или Add Above, после чего установите в диалоговом окне Edit Contents Tab Entry переключатель Topic.

    Для каждого раздела необходимо указать как минимум идентификатор. Для Help Workshop желательно задавать идентификаторы разделов, начинающиеся с префикса IDH_. Обратите внимание, что в нашем примере были использованы именно такие имена. Префикс упрощает компиляцию файла разделов.

    Кроме того, для раздела необходимо задать название. Оно указывается в поле Title. В этом упражнении можно не обращать внимания на другие поля: они нужны при выполнении макросов или использовании нескольких справочных файлов с одним файлом содержания.
  • Создайте следующие сноски:
    # IDH_AddTopics
    $ Добавить разделы
    + auto
  • Введите текст следующего раздела:
    Написать текст разделов

    Следующим шагом должно стать написание текста разделов. Для этого вам понадобится редактор, который умеет сохранять текст в формате RTF (Rich Text Format).

    Начните с создания нового документа.

    Каждый раздел должен начинаться на отдельной странице. Если вы пишите сразу несколько разделов, разделяйте их жесткими разрывами страниц. В Word для этого используется комбинация клавиш CTRL+ENTER.

    Закончив составление текста, вставьте сноски, которые служат для объединения разделов.
  • Создайте следующие сноски:
    # IDH_WriteTopics
    $ Написать текст разделов
    + auto
  • Введите текст следующего раздела:
    Добавить сноски

    Составив разделы, необходимо создать на каждой странице сноски. Обязательной является только сноска для идентификатора раздела. Чтобы задать идентификатор, следует вставить сноску и выбрать в качестве ее знака символ фунта (#).

    Создание сноски для идентификатора раздела:

    Установите курсор в начале странице (сноски должны находиться перед текстом раздела). В Word выполните команду Вставка|Сноска и выберите # в качестве знака сноски. Вместо текста сноски введите идентификатор раздела с префиксом IDH_, упрощающим обработку файла компилятором.
  • Создайте следующие сноски:
    # IDH_AddFootnotes
    $ Добавить сноски
    + auto
  • Введите текст следующего раздела:
    Сохранить файл

    Когда все разделы и сноски будут введены, сохраните файл в формате RTF. После этого можно вернуться к работе с Help Workshop и создать файл проекта.
  • Создайте следующие сноски:
    # IDH_SaveRTF
    $ Сохранить файл
    + auto
  • Введите текст следующего раздела:
    Создать файл проекта

    Последним компонентом справочного файла является файл проекта. Он определяет различные характеристики справочного файла, содержит ссылки на файл разделов и файл содержания и прочую информацию, необходимую для построения справочного файла.

    В Help Workshop выполните команду File|New. Выберите строку Help Contents и нажмите кнопку OK.

    Введите имя справочного файла в поле Help File. В нашем примере использовано имя Skill11.hlp.
  • Создайте следующие сноски:
    # IDH_CreateProjectFile
    $ Создать файл проекта
    + auto
  • Введите текст следующего раздела:
    Задать параметры проекта

    Нажмите кнопку Options, чтобы задать различные параметры проекта.

    Вкладка General

    Введите в поле Help Title описание справочного файла.

    Вкладка Compression

    Установите переключатель Custom и флажок Hall Compression. Это обеспечивает также возможность поиска по ключевым словам в справочном файле.

    Вкладка Files

    Выберите из первого списка созданный ранее файл разделов (в формате RTF). В поле Contents File введите имя файла содержания.
  • Создайте следующие сноски:
    # IDH_SetOptions
    $ Задать параметры проекта
    + auto
  • Введите текст следующего раздела:
    Добавить файлы в проект

    Задав параметры проекта, следует добавить в него файлы разделов и содержания, а также графику.
  • Создайте следующие сноски:
    # IDH_AddFiles
    $ Добавить файлы в проект
    + auto
  • Введите текст следующего раздела:
    Определить параметры окна

    Чтобы в справочном окне присутствовали кнопки просмотра, следует задать для него нестандартный стиль.

    Нажмите кнопку Window. В диалоговом окне Window Properties нажмите кнопку Add. Введите имя стиля окна и укажите, что окно должно создаваться на базе стандартного окна Procedure.

    Затем перейдите на вкладку Buttons и установите флажок Browser - тем самым вы добавляете кнопки просмотра в справочное окно.

    Наконец, закройте диалоговое окно кнопкой OK.
  • Создайте следующие сноски:
    # IDH_DefineWindow
    $ Определить параметры окна
    + auto
  • Введите текст следующего раздела:
    Сохранить и откомпилировать проект

    Перед тем как двигаться дальше, необходимо сохранить проект и файл содержания. Для этого можно нажать на кнопку Save and Compile в нижней части диалогового окна проекта.

    Компилятор справки обрабатывает файлы разделов, содержания и проекта. Результаты отображаются в окне. Если компиляция прошла без ошибок, можно переходить к тестированию справочного файла.
  • Создайте следующие сноски:
    # IDH_Compile
    $ Сохранить и откомпилировать проект
    + auto
  • Введите текст следующего раздела:
    Протестировать полученный справочный файл

    Последний и самый важный шаг. Протестируйте справочный файл и убидитесь, что он позволяет успешно перемещаться по ссылкам. Проверьте возможные опечатки и ошибки макета. Справочный файл следует тестировать так, как обычно тестируются приложения.

    Когда все будет работать нормально, справочный файл можно подключать к приложению.
  • Создайте следующие сноски:
    # IDH_Test
    $ Протестировать полученный справочный файл
    + auto

Вы только что создали свой первый файл разделов. Помните - это был обычный файл, который лишь показывает общую схему действий. После того как вы введете все разделы и сноски, этот процесс надолго останется в вашей памяти. Как известно, практика - лучший учитель. Давайте перейдем к последней стадии работы над справочным файлом - созданию файла проекта.

Создание файла проекта

Чтобы связать воедино файлы содержания и разделов, необходимо создать файл проекта:

  • Если Help Workshop не был открыт, запустите его.
  • Создайте новый файл проекта командой File|New. Выберите строку Help Project и нажмите кнопку OK.
  • Когда Help Workshop предложит задать имя проекта, введите строку Skill11 и нажмите кнопку Save.
  • Откройте диалоговое окно Options с помощью одноименной кнопки.
  • В диалоговом окне Open введите строку Создание справочного файла в поле Help Title.
  • Перейдите на вкладку Compression. Установите переключатель Custom, а затем - флажок Hall Compression.
  • Перейдите на вкладку Files и введите в поле Help File строку Skill11.hlp.
  • Нажмите кнопку Change рядом с полем RTF Files.
  • Когда откроется диалоговое окно Topic Files, нажмите кнопку Add. Выберите файл Skill11.rtf. Файл разделов добавляется в проект. Нажмите кнопку Open.
  • Если файл Skill11.rtf присутствует в списке Topic Files, закройте диалоговое окно кнопкой OK.
  • Нажмите кнопку Browse рядом с полем Contents. Выберите в диалоговом окне файл Skill11.cnt. Созданный ранее файл содержания включается в проект.
  • Закройте диалоговое окно Options кнопкой OK.
    Обратите внимание на то, что некоторые вкладки диалогового окна Options нами не использовались. Более подробную информацию о параметрах, расположенных на этих вкладках, можно получить в справочной системе Help Workshop.
  • Нажмите кнопку Windows, чтобы вызвать диалоговое окно Window Properties.
  • В оцне Window Properties нажмите кнопку Add, чтобы создать новый стиль окна.
  • В диалоговом окне Add New Window Type введите строку Main в поле Create a Window Named. Выберите из списка Based on this Standard Window строку Procedure. Когда настройка параметров будет завершена, нажмите кнопку OK.
  • Нажмите кнопку Buttons и установите флажок Browser. В справочном окне создаются кнопки просмотра. Не изменяйте состояния остальных флажков. Закройте диалоговое окно Window Properties кнопкой OK.
  • Нажмите кнопку Map. В этом диалоговом окне мы сделаем нашу справочную систему контекстно-зависимой.
  • Для каждого из раделов, перечисленных ниже, нажмите кнопку Add и введите соответствующий идентификатор в поле Topic ID, а затем идентификатор контекста в поле Mapped Numeric Value:
    Идентификатор раздела Идентификатор контекста
    IDH_CreateContentsFile 100
    IDH_AddHeadings 200
    IDH_AddTopics 300
    IDH_WriteTopics 400
    IDH_AddFootnotes 500
    IDH_SaveRTF 600
    IDH_CreateProjectFile 700
    IDH_SetOptions 800
    IDH_AddFiles 900
    IDH_DefineWindow 1000
    IDH_Compile 1100
    IDH_Test 1200
  • Нажмите кнопку Save and Compile. Во время компиляции окно Workshop сворачивается. Если все прошло нормально, окно восстановливается и в нем отображаются результаты компиляции.

Справочный файл следует немедленно протестировать, чтобы убедиться, что он работает нормально. Для этого выполните следующие действия:

  • Нажмите кнопку Help (желтый вопросительный знак) на панели инструментов.
  • Когда на экране появится диалоговое окно View Help File, в нем должно быть заранее указано имя файла Skill11.hlp. Если его там нет, нажмите кнопку Browse и выберите файл Skill11.hlp. После того как файл будет выполнен, нажмите кнопку View Help.
  • На вкладке Contents попробуйте развернуть заголовки - вы увидите, как выглядит ваш справочный файл. Щелкайте на отдельных разделах, чтобы просмотреть их.

Вот и все, что требуется сделать для создания простейшего справочного файла. Открывайте полученный файл Skill11.hlp каждый раз, когда вам необходимо будет создавать файл справки в формате HLP.

Подключение справочного файла к приложению

Подключение справочного файла в Visual Basic

  • Создайте в Visual Basic новый проект типа Standard EXE.
  • Задайте свойству Name формы Form1 значение frmMain, а свойству Caption - значение Приложение со справкой.
  • Щелкните правой кнопкой мыши на строке Project1 в окне проекта и выберите из контекстного меню команду Project1 Properties.
  • В диалоговом окне Project Properties занесите в поле Help File имя справочного файла из предыдущего примера, а затем нажмите кнопку OK.
  • Создайте на форме элемент меню и добавьте следующие пункты и команды:
    ... ...
    Меню Help
    Caption: &Help
    Name: mnuHelp
    Команды меню Help
    Caption: &Contents Files
    Name: mnuHelpContentsFile
    Caption: &Topic Files
    Name: mnuHelpTopicFiles
    Caption: &Project Files
    Name: mnuHelpProject
  • Когда меню будут закончены, закройте редактор кнопкой OK.
  • Включите в проект элемент стандартного диалогового окна. Задайте его свойству Name значение dlgHelp. Этото элеамент будет использоваться для вызова справочного файла.
  • Откройте окно программы и добавьте в процедуру события mnuFileExit_Click() оператор End.
  • Добавьте в процедуру события Form_Load() следующую строку:
    dlgHelp.HelpFile = App.HelpFile
  • Добавьте следующий фрагмент в процедуру события mnuHelpContentsFile_Click():
    Private Sub mnuHelpContentsFile_Click()
    dlgHelp.HelpContext = "100"
    dlgHelp.HelpCommand = cdlHelpContext
    dlgHelp.ShowHelp
    End Sub
  • Добавьте следующий фрагмент в процедуру события mnuHelpTopicFiles_Click():
    Private Sub mnuHelpContentsFile_Click()
    dlgHelp.HelpContext = "400"
    dlgHelp.HelpCommand = cdlHelpContext
    dlgHelp.ShowHelp
    End Sub
  • Добавьте следующий фрагмент в процедуру события mnuHelpTopicFiles_Click():
    Private Sub mnuHelpProject_Click()
    dlgHelp.HelpContext = "700"
    dlgHelp.HelpCommand = cdlHelpContext
    dlgHelp.ShowHelp
    End Sub
  • Сохраните и запустите программу.

Внимание! Из-за отсутствия у автора данного сайта Microsoft Visual Basic вышеприведенный пример не был протестирован.

Подключение справочного файла в Delphi

Подключить файл справки HLP в Borland Delphi 7 можно несколькими путями.

Первый путь осуществляется через использование ShellAPI (поэтому вначале надо в модуле подключить ее), например следующим образом:

// Подключаем ShellAPI к модулю формы
uses
  Windows, ..., ShellAPI; 

...

// Объявляем функцию
function ExecuteFile(const pFileName, pParams, pDir: String;
                     ShowCmd : Integer): THandle;
var
  FileName, Params, Dir: array[0..79] of Char;
begin
  Result := ShellExecute(Application.MainForm.Handle, nil,
                         StrPCopy(FileName, pFileName),
                         StrPCopy(Params, pParams),
                         StrPCopy(Dir, pDir), ShowCmd);
end;

// Объявляем процедуру вызова файла справки
procedure TMain.mnuHelp_ContentsClick(Sender: TObject);
var
  needs : string;
begin
  needs := 'skill11.hlp';
  if ExecuteFile(needs, '', '', SW_SHOW) <= 32 then
    MessageDlg('Невозможно открыть файл:' + #13#10 + needs,
               mtError, [mbOK], 0)
  else
    // Нет действия
end;

Данный код позволяет загружать содержание справки, а не конкретный раздел справочного файла. Чтобы загрузить конкретный раздел справки необходим другой код (источником данного кода является книга Том Свана "Основы программирования в Delphi для Windows 95" (К.: "Диалектика", 1996. - 480 с., ил.)).

Путь второй. Создав файл *.hlp, присвойте его имя свойству HelpFile объекта Application. Это можно выполнить только во время работы программы (например, в обработчике события OnCreate формы). Для этого в обработчик введите оператор, подобный следующему:

Application.HelpFile := 'skill11.hlp';

Чтобы присвоить определенный раздел справки определенному объекту приложения или формы, необходимо например следующее:

Application.HelpContext(Button1.HelpContext);

Другой способ перехода к нужной теме заключается в использовании метода HelpJump, которому в качестве параметра нужно передать контекстно-зависимую строку:

Application.HelpJump('Subject');

В зависимости от того, имеет ли объект Application связанный с ним файл справочной системы, метод HelpJump возвращает True или False. Используя эту особенность, можем вывести сообщение об ошибке, если HelpJump вовращает False:

if not Application.HelpJump('Subject') then
  ShowMessage('Unable to open help file');

Третий путь взят из книги Рубенкинга (Рубенкинг Н. Программирование в Delphi для "чайников". - К.: "Диалектика", 1996. - 304 с., ил):
Пункт меню Обработчик события OnClick
Содержание Application.HelpCommand(HELP_CONTENTS, 0);
Поиск справки о... Application.HelpCommand(HELP_PARTIALKEY, 0);
Использование справки Application.HelpCommand(HELP_HELPONHELP, 0);

Тем или иным способом, но вы сможете подключить справочный файл к вашему Delphi-приложению весьма просто.

Заключение

Вы можете скачать в одном архивном файле четыре документа: skill11.cnt, SKILL11.HLP, skill11.hpj, skill11.rtf, которые являются наглядным пособием данной статьи.

Скачать правила создания HLP-справки (15 KB).

Следует отметить, что авторские права на материалы, которые позаимствованы из книг, сохранены за истинными авторами; Иван Чередниченко никоим образом не пытался посягнуть на чужую интеллектуальную собственность.

Автор надеется, что данной статьи достаточно, чтобы вы смогли создавать свои справочные файлы, а также связывать (подключать) их к приложениям на Visual Basic и Borland Delphi 7. Также информацию о создании HLP-справки вы можете узнать из книг в списке литературы.

Источники