Windows hlp пример программного приложения

2006 г.

Справочная система (далее в тексте также — «справка») — важная составная часть любой более-менее сложной (и даже простой) программы. Существуют разные форматы справочных систем. Справка в формате
WinHelp — о ней в статье и пойдет речь, Html-help — как, например, справка к ОС Windows или к программам MS Office. В качестве справки может выступать набор связанных html-файлов, например так
организована справка к СУБД MySQL. Из достоинств WinHelp можно назвать ее надежность и меньшие, чем у HTML-help, требования к ресурсам. Существуют различные программы для создания справочных систем
названных типов. Однако, для создания несложной справки вполне достаточно стандартной программы MS Help Workshop, которая поставляется с Delphi. Потребуется еще редактор rtf файлов, в данной статье
описывается работа со знакомым всем MS Word’ом. Все действия, которые будут описаны — несложные, но мне в свое время потребовалось определенное количество усилий и времени, чтобы разобраться по
справке к Help Workshop, как все это делать. Надеюсь, что статья сможет облегчить этот путь для других. Расчитана она на начинающих. В статье описывается создание простой справки, оглавления к ней,
создание последовательностей просмотра, вставка рисунков и гиперссылок, а также подключение справки к программе. Рассматривается только техническая сторона, вопрос о том, что написано в
справке, оставлен в стороне.
 

Общие сведения

В состав операционной системы Windows входит подсистема поддержки справки — WinHelp. Она имеет свое API, которое позволяет предоставить справочную информацию в том или ином виде в приложениях
Windows. Создание справочной системы можно разделить на две части

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

В состав справки к программе обычно входит несколько файлов:

  • Файлы содержащие собственно информацию — имеют расширение .hlp
  • Файлы оглавления — .cnt (от апглийского content)
  • После первого вызова справки WinHelp создает файл .gid
  • Также другие типы файлов, например, для полнотекстового поиска, о чем в статье речь не идет.

Создание тематических файлов.

Для создания справки сначала нужно подготовить файлы, содержащие справочную информацию. Это — обычные документы в формате rtf, которые можно создавать с помощью различных программ. Я здесь буду
описывать работу с MS Word (создаем документ и выбираем «Сохранить как» — «Текст в формате RTF»). Будем называть эти файлы тематическими (topic files). Для получения из тематических файлов готовых
файлов справки (hlp), их нужно обработать (компилировать) программой HelpWorkshop (hwc.exe). Кроме собственно текста и рисунков, тематические файлы могут содержать также специальную разметку,
которая несет в себе информацию, нужную для создания переходов по ссылкам, связи оглавления справки с ее темами и т.п.  — для реализации различных возможностей WinHelp.

Обычно справка содержит несколько тем и оглавление, из которого можно перейти к этим темам. Самый простой вариант: если тема — одна и оглавления нет. В таком случае просто пишем то, что нужно и
сохраняем это в файле с расширением «.rtf». Для создания нескольких тем процесс усложняется ненамного:

  • Каждая тема должна заканчиваться жестким переходом на новую станицу. Для этого после окончания темы нужно в меню (напомню, что речь идет о MS Word) «Вставка» выбрать «Разрыв»->»Начать новую
    страницу».

Для того, чтобы тема были доступна из оглавления к справке, нужно задать ей идентификатор. Для этого нужно в то место текста, куда будет впоследствии происходить переход из оглавления
(начало темы или, если нужно, другое место), вставить специальную разметку, а именно: концевую сноску. Символом сноски нужно выбрать «#». Идентификатором темы служит текст сноски. Например, создадим
тему «Поддержка», отделим ее от других тем разрывами страниц и зададим ей идентификатор «support». Для этого поместим каретку ввода около заголовка темы и выберем в меню «Вставка»->»Сноска…». В
диалоговом окне (рис.1) выбираем вид сноски — «концевая», нумерация — «другая», в окошке для ввода символа пишем «#» (без кавычек, понятное дело). Нажимаем ОК, ссылка добавлена и каретка
автоматически переведена к тексту ссылки. Пишем «support». Готово.
Повторяем то же самое для всех тем справки. Сохраняем файл. Теперь можно попробовать создать свой хелп. 

Рис.1. Добавление концевой сноски.

Запускаем программу HelpWorkshop. Это — файл Hcw.exe в директории Delphi\Help\Tools\. Создаем новый проект через меню «File»->»New»->»Help Project». Справа на панели есть ряд кнопок,
нажимаем «Files…». В диалоговом окне добавляем наш тематический файл и закрываем это окно. Сохраним проект — это будет файл с расширением hpj (Help Project). Насколько я понял, после первого
запуска Help Workshop связывает себя с файлами hpj, а также — с файлами оглавления справки (cnt), так что их потом можно открывать двойным щелчком мышью. Для создания help-файла можно просто нажать
кнопку «Save and Compile». Откроется новое окно с сообщением о результате компиляции. Предположим, что все в порядке, закроем это окно. Теперь в директории, где находился наш проект (.hpj), должен
появиться файл справки. Однако, при двойном щелчке мышью на нем мы сможем просмотреть только первую тему. Чтобы просматривать все темы и перемещаться между ними, нужно добавить файл оглавления.

Создание оглавления справки.

Файл оглавления справки имеет простой текстовый формат, но создавать его удобно тоже в HelpWorkshop. Для этого выбираем в меню HelpWorkshop «File» -> «New» ->

«Help Contents»

.
В верхней части окна нужно вписать имя главного файла справки (файлов, вообще говоря, может быть несколько) и заголовок (title) для оглавления справки. То же можно сделать в диалоговом окне, которое
открывается при нажатии кнопки Edit… .

Теперь создаем собственно оглавление. Оно состоит из элементов двух типов — разделы справки, которые включают в себя несколько тем и представлены в оглавлении справки значком книжки и сами темы —
текст и картинки, представлены в оглавлении справки значком листа со знаком вопроса на нем (можно посмотреть это в оглавлении любой справки). Также в оглавление можно вставить макросы и включить
файлы (include),  этого я здесь касаться не буду. Справа на панели есть набор кнопок для добавления и манипуляции элементами оглавления. (Add Below — Добавить ниже, Add Above — Добавить выше,
Move Right — Сдвинуть вправо, Move Left — Сдвинуть влево, Edit, Delete). При помощи них создаем нужную структуру оглавления. При добавлении раздела в диалоговом окне нужно указать только его
название, при добавлении темы — название, идентификатор (тот, который мы задали ей в rtf-файле, когда вставляли концевую сноску), имя help-файла и имя окна. Если тема находится в том же
help-файле,  который мы указали как главный, то имя help-файла указывать не нужно. Имя окна указывать тоже не обязательно, если оно не указано, то тема откроется в окне по-умолчанию. Нужно
сохранить файл оглавления (он будет иметь расширение .cnt) в той же директории, где находится help-файл лучше с тем же именем, что и help-файл. Теперь нужно снова открыть файл проекта .hpj и, нажав
кнопку «Options», в открывшемся диалоговом окне на закладке «Files» указать наш файл оглавления (Contents file). Закрываем диалоговое окно, снова нажимаем «Save and Compile». Теперь при двойном
щелчке мышью по значку файла справки должно открыться ее оглавление, из которого можно получить доступ ко всем темам.

Мне не удалось, похоже, это невозможно, создать такую структуру оглавления, чтобы в самом левом ряду сначала шел значок темы (например, «Общие сведения»), а под ним — значки разделов. Пришлось
даже для одиночной темы создавать раздел, содержащий ее одну.

Создание последовательностей просмотра.

Удобно перемещаться в справке от темы к теме с помощью кнопок «>>» и «<<» на панели инструментов окна или при помощи клавиш «<«, «>» клавиатуры. Чтобы добавить такую возможность,
нужно:

  1. Создать одну или несколько последовательностей просмотра (browse sequence) в .rtf файле текста справки, добавив соответствующую разметку.
  2. Определить в проекте справки (файл .hpj) окно с соответствующими кнопками.

Разметка имеет следующий вид: это тоже концевые сноски, как и для идентификаторов тем, однако в данном случае знаком сноски служит не символ «#», а «+» — знак плюса. Текстом сносок может быть либо
число, либо строка символов. Просмотр будет осуществляться в порядке возрастания (как при сортировке строк). Отсюда следующее — если используются номера, то нужно вставлять необходимое количество
нулей перед значащими цифрами для правильной сортировки. Например, если у Вас 20 тем, то первые нужно нумеровать как 01, 02, и т.д. Возможно несколько вариантов:

  • Если последовательностей несколько, то каждая из них может иметь имя, а темы внутри последовательности отличаться номерами (например, GUI1, GUI2, GUI3, …), Если номера не заданы, WinHelp сам
    создаст последовательность просмотра при компиляции проекта в том порядке, как расположены темы в файле .rtf.  
  • Если не писать ничего в текстах ссылок или написать во всех ссылках «auto» (без кавычек), то WinHelp при компиляции создаст одну последовательность просмотра в том порядке, как расположены темы в
    файле .rtf.

Чтобы добавить кнопки навигации «<<» и «>>» в окне справки (по умолчанию их нет), нужно определить хотя бы одно окно. Для этого, открыв файл проекта в HelpWorkshop, нужно нажать кнопку
«Windows…» в правой части окна. В диалоговом окне  с закладками нажать кнопку «Add…» и в открывшемся окне ввести в поле названия «main», а поле типа окна очистить, после чего нажать OK.
Теперь у нас определено одно окно, различные свойства которого можно изменять, перемещаясь по закладкам. На закладке «Buttons» отмечаем галочкой «Browse». Нажимаем ОК, готово. Теперь окно справки
будет иметь нужные кнопки. Нажимаем «Save and Compile» внизу окна и можем проверять, что получилось в выходном help файле.

Добавление картинок и гиперссылок.

Бывает, что в справку нужно поместить изображения. Это можно сделать, просто добавив их в документ rtf обычным для MS Word способом. Если одно изображение используется в нескольких местах, то можно
воспользоваться специальной разметкой, предусмотренной для вставки изображений в справку, так что изображение будет храниться в одном экземпляре. Здесь я не буду рассматривать, как это сделать
(честно говоря, я этого никогда и не делал).

Обычное дело — указать адрес своего сайта и/или электронной почты в разделе «Поддержка». Как сделать, чтобы  эта ссылка выглядела и функционировала как гиперссылка на Веб-страницах? Аналог
гиперссылки, т.е. тега anchor (<a>) HTML  в WinHelp — «hotspot». Hotspot — это область, по щелчку мыши на которой, выполняется какое-либо действие из предусмотренных в WinHelp. В данном
случае нам нужно запустить один из макросов WinHelp,  а именно макрос ExecFile. Этот макрос напоминает функцию WinApi ShellExecute. Синтаксис его такой:

ExecFile(program[, arguments[, display-state[, topic-ID]]])

Первый параметр, как написано в справке, может указывать на программу или файл. Однако, как и в ShellExecute, вместо имени файла можно указать URL, например «http://www.mysite.ru» или
«mailto:nekto@somemail.ru».
Чтобы создать hotspot,  запускающий такой макрос, нужно сделать следующее:
Сразу после текста hotspot’a ввести символ «!», а сразу за ним — текст макроса, например:

Наш сайт: www.mysite.ru!ExecFile(http://www.mysite.ru)

Примечание: URL в скобках должен быть без кавычек.
Далее, нужно отформатировать этот отрывок так: текст hotspot’a должен иметь двойное подчеркивание, а символ «!» и текст макроса после него — иметь атрибут «скрытый». И то, и другое делается через
меню «Формат» -> «Шрифт» (см. рис. 2) На всякий случай, еще раз уточню: двойное подчеркивание (выпадающий список рядом с «цветом текста»), а не зачеркивание..

Рис. 2.

Теперь, если добавить такой hotspot и компилировать проект, то мы увидим в своей справке, что в строке текста

Наш сайт: www.mysite.ru  — адрес выглядит и функционирует как гиперссылка.

Присоединяем справку к программе.

Чтобы справка была доступна в программе, нужно указать программе на файл .hlp. Самый простой способ размещения файла справки — в той же папке, где находится исполняемый файл. Определить для
приложения файл справки можно так: открыв проект (приложения) в Delphi и выбрав меню «Project» -> «Options» -> «Application», вписать название файла справки в поле ввода «Help file». При этом
нужно указать название файла без пути. Когда WinHelp пытается найти справочный файл, одна из просматриваемых директорий — та, где расположен исполняемый файл программы. Другой способ — в обработчик
события OnCreate главной формы программы вставить строку:

Application.HelpFile:=ExtractFilePath(Application.ExeName) + "MyHelp.hlp";

где MyHelp.hlp — название файла справки.

Чтобы из меню в программе вызвать оглавление справки, нужно воспользоваться  функцией

Application.HelpCommand(HELP_FINDER, 0);

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

Application.HelpJump('MyTopic'),

где MyTopic — идентификатор темы.

Один из способов вызова справки — нажатие клавиши F1. Можно организовать вызов контекстной справки при нажатии на F1,  когда активным является тот или иной элемент управления. Для этого
соответствующей теме справки нужно присвоить номер, а затем этот номер присвоить свойству HelpContext элемента управления. Чтобы задать номера для тем справки, нужно открыть проект справки в
HelpWorkshop и нажать кнопку «Map» в правой части окна. Нажимаем в диалоговом окне «Add», вводим идентификатор темы и произвольный номер (например, 1 :) ), повторяем это для всех нужных тем (каждой —
свой номер), закрываем окно и нажимаем в очередной раз «Save and Compile». Затем в Delphi, в окне инспектора объектов, присваиваем нужные номера нужным элементам управления (напоминаю, свойство
HelpContext).

Windows HLP (Высокий Уровень Программы на Windows) является форматом файловой справки, который широко используется в операционной системе Windows. Этот формат обеспечивает подробные инструкции, объяснения и справочную информацию о различных функциях и возможностях программного обеспечения.

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

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

Однако, следует отметить, что формат Windows HLP является устаревшим и был заменен в более поздних версиях Windows форматом CHM (Составная HTML Справка). Тем не менее, Windows HLP файлы все еще используются в некоторых приложениях и могут быть открыты и просмотрены в Windows 10 и более ранних версиях операционной системы.

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

Содержание

  1. Что такое Windows HLP?
  2. Общая информация о формате Windows HLP
  3. Преимущества использования Windows HLP
  4. Как открыть файлы Windows HLP
  5. Как создать файлы Windows HLP
  6. Полезные инструкции для работы с файлами Windows HLP

Что такое Windows HLP?

Формат HLP был широко использован в предыдущих версиях Windows, начиная с Windows 3.1. Он предлагает структурированную и легко доступную справку, которая обычно включает гиперссылки, оглавление, индекс и поиск по ключевым словам.

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

Начиная с более поздних версий Windows, таких как Windows Vista, формат HLP постепенно уступает место новому формату справки — CHM (Compiled HTML Help). Формат CHM предлагает более широкие возможности, включая поддержку мультимедиа и расширенное форматирование текста.

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

Преимущества файлов HLP Недостатки файлов HLP
  • Легко читаемый и структурированный формат
  • Возможность включения гиперссылок и поиска
  • Поддержка оглавления и индекса
  • Нет поддержки мультимедиа
  • Ограниченные возможности форматирования текста
  • Формат устаревший и заменяется новыми форматами справки

Общая информация о формате Windows HLP

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

Формат Windows HLP предоставляет удобный способ представления информации, так как он позволяет связывать различные разделы справки и создавать ссылки между ними. Это упрощает навигацию и поиск информации внутри файла HLP.

Однако формат Windows HLP медленно устаревает и не используется в последних версиях операционной системы Windows. Вместо этого Microsoft предлагает использовать форматы справки CHM (Compiled HTML Help) и HTML для создания справочной документации.

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

В следующем разделе мы рассмотрим подробнее, как открыть и работать с файлами HLP в различных версиях операционной системы Windows.

Преимущества использования Windows HLP

  • Удобство использования: Windows HLP предлагает простой и интуитивно понятный пользовательский интерфейс, который облегчает навигацию и поиск информации. Это позволяет пользователям быстро находить нужную информацию и получать решения на возникающие вопросы.
  • Поддержка мультимедийных элементов: В Windows HLP можно использовать различные форматы изображений, видео и звука, что позволяет создавать более наглядные и понятные материалы справки. Это особенно полезно, когда необходимо демонстрировать процессы и действия на экране.
  • Возможность создания ссылок: Windows HLP поддерживает создание гиперссылок, что облегчает связывание различных частей справки и создание направлений для быстрого перехода. Это позволяет пользователям эффективно перемещаться по справочной информации и быстро находить нужные разделы.
  • Компактность и эффективность: Формат Windows HLP обладает минимальным размером файлов, что позволяет сэкономить пространство на жестком диске и упростить распространение файлов справки. Благодаря этому формату, выборочные обновления и патчи могут быть доставлены пользователям быстро и эффективно.
  • Возможность совместного использования: Windows HLP позволяет нескольким пользователям работать с файлами справки одновременно. Это особенно полезно для администраторов, разработчиков и пользователей, которые могут совместно обрабатывать информацию, вносить исправления и обновления.

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

Как открыть файлы Windows HLP

Существует несколько способов открыть файлы Windows HLP:

1. С помощью программы «Помощник Windows». Запустите программу «Помощник Windows», щелкнув правой кнопкой мыши по кнопке «Пуск» на панели задач и выбрав пункт «Помощник Windows». Затем выберите «Открыть справку» и найдите файл Windows HLP, который вы хотите открыть.

2. С помощью программы «Microsoft Help Viewer». Если у вас установлена программа «Microsoft Help Viewer», вы можете открыть файл Windows HLP, щелкнув правой кнопкой мыши по файлу, выбрав пункт «Открыть с помощью» и выбрав программу «Microsoft Help Viewer» из списка.

3. С помощью сторонних программ. Существуют сторонние программы, которые позволяют открывать файлы Windows HLP без использования официальных программ от Microsoft. Установите одну из таких программ на свой компьютер и откройте файл Windows HLP через нее.

Теперь вы знаете, как открыть файлы Windows HLP и получить доступ к справочной информации и документации операционной системы Windows.

Как создать файлы Windows HLP

Для создания файлов Windows HLP вам понадобится специальное программное обеспечение, например, Microsoft Help Workshop. Следуйте следующим шагам, чтобы создать файлы Windows HLP:

1. Установите программное обеспечение Microsoft Help Workshop на свой компьютер. Вы можете найти его на официальном сайте Microsoft или на других платформах.

2. Запустите Microsoft Help Workshop после его установки. Вам будет предоставлена пустая справка, которую вы можете заполнить информацией.

3. Щелкните правой кнопкой мыши на пустом месте и выберите пункт «New Project» (Новый проект). Укажите название проекта и его расположение на вашем компьютере. Нажмите «ОК».

4. Выберите опцию «Add New Topic» (Добавить новую тему), чтобы создать новую страницу в справке. Укажите название и содержание страницы. Вы можете использовать текстовый редактор, подобный MS Word, чтобы создать содержимое страницы.

5. Чтобы добавить ссылку на другую страницу, выберите опцию «Add New Section» (Добавить новый раздел). Укажите название раздела и выберите страницу, на которую нужно ссылаться. Ссылка будет автоматически создана.

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

7. После того, как вы завершили создание своей справки, выберите опцию «Build» (Собрать), чтобы скомпилировать проект и создать файлы Windows HLP. Укажите расположение выходных файлов и нажмите «ОК».

8. Проверьте созданные файлы Windows HLP на предмет ошибок и выравнивания. По необходимости внесите изменения в исходные файлы и повторите процесс сборки.

Теперь у вас есть готовые файлы Windows HLP, которые вы можете использовать для создания справки для своего приложения или программы.

Полезные инструкции для работы с файлами Windows HLP

  • Определите версию программы: Прежде чем начать работу с файлами Windows HLP, важно убедиться, что вы используете правильную версию программы или операционной системы. Как правило, инструкции для работы с HLP-файлами могут различаться в зависимости от версии.
  • Используйте поиск: HLP-файлы обычно содержат много информации, и иногда может быть сложно найти нужную вам статью или инструкцию. Поиск по ключевым словам может существенно ускорить процесс поиска.
  • Изучите содержимое оглавления: Большинство HLP-файлов содержат оглавление, которое помогает вам найти нужную информацию. Ознакомление с оглавлением позволит вам быстро ориентироваться в файле и перейти к нужному разделу.
  • Используйте ссылки: Внутри HLP-файлов часто присутствуют ссылки на связанные статьи или разделы. Переход по ссылкам может помочь вам получить дополнительную информацию или решить проблему, с которой вы столкнулись.
  • Проанализируйте предоставленные примеры: Некоторые HLP-файлы содержат примеры использования программы или функций операционной системы. Изучение и анализ таких примеров может помочь вам лучше понять возможности и особенности работы с программой или Windows.

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

В этом посте я попробую в подробностях разобрать подключение справки к вашим Delphi программам. Здесь не будет рассматриваться, как создаются сами файлы справки (тем не менее, в конце я дам ссылки на программы и описание).

Содержание:

  1. Как Delphi программы работают с файлами справки.
  2. Практика: указываем файл справки.
  3. Поддержка справки в Delphi программах.
  4. Практика: простой вызов статической справки.
  5. Практика: динамический вызов контекстно-зависимой справки.
  6. Обзор распространённых форматов файлов справок.
  7. Поддержка форматов справки в Delphi.
  8. Важное примечание: модальные окна.
  9. Заключение.

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

В каждом VCL приложении Delphi есть глобальный объект Application («Приложение») типа TApplication. У этого объекта есть свойства и методы, влияющие на всё приложение целиком. И для активации справки у него есть свойство Application.HelpFile.

Когда этому свойству присвоено значение, вы можете использовать методы и свойства объекта Application и ваших форм (окон), чтобы работать с вашей справкой. Значением свойства является имя файла справки вашей программы. Формат справки может быть любым из поддерживаемых вашим приложением (об этом чуть позже). Сейчас только отметим, что разные форматы файлов справок имеют разные возможности (и внешний вид!). Отличается также и поддержка этих форматов в самой Delphi. Поэтому, будет ли работать та или иная возможность, обсуждаемая ниже — будет зависеть от того, какой формат файла справки вы выберите. Но, опять-таки, об этом позже.

Итак, помимо объекта Application, свойство HelpFile есть и у объектов класса TForm. Когда приложению поступает команда по работе со справочной системой (например, пользователь нажал F1), то Delphi приложение будет использовать файл справки, указанный в Application.HelpFile для выполнения этой команды. Но если при этом активна форма, у которой задано её свойство HelpFile, то для выполнения команды будет использовать свойство формы, а не приложения.

Иными словами, Form.HelpFile просто изменяет Application.HelpFile в контексте одной конкретной формы. Если в вашей программе есть только один файл справки, то вы не должны устанавливать свойства HelpFile у форм, а установить свойство HelpFile у объекта Application.

to topПрактика: указываем файл справки

Вы можете установить свойство HelpFile программно (кодом) или указать в свойствах проекта.

Программно: Project / View Source

program Project1;

uses
  Forms,
  SysUtils, // <- Добавлено
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.HelpFile := ExtractFilePath(Application.ExeName) + 'Help\HelpFile.hlp'; // <- Добавлено
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

В этом примере файл справки должен называться HelpFile.hlp и лежать в подпапке Help вашей программы. Разумеется, вы должны заменить эту строчку своими данными.

Через GUI: Project / Options / Application:

Здесь есть целых три проблемы:

  1. Нажатие на кнопку «Browse» покажет вам только *.hlp файлы. Чтобы выбрать файл другого формата, вам нужно выбрать в фильтре диалога открытия опцию «All Files (*.*)».
  2. Выбор файла справки кнопкой «Browse» занесёт в поле полный путь к файлу вида «C:\Users\Александр\Documents\RAD Studio\Projects\DemoProject\Help\HelpFile.hlp» — это не очень удачная идея, ведь на машине, куда ваша программа будет потом установлена, этот файл будет лежать в совершенно ином месте. Лучшая идея — обрезать путь до относительного: «.\Help\HelpFile.hlp«.
  3. Проблема с предыдущим пунктом в том, что относительный путь считается относительно текущего каталога. Который обычно равен папке вашей программы, но далеко не всегда. Лучшим решением будет исправить этот момент так:
    Application.HelpFile := ExtractFilePath(Application.ExeName) + Application.HelpFile;

    Что даёт вам 100% гарантию работы, но… не проще ли просто использовать программную установку пути изначально, не трогая GUI?

Что касается индивидуальных файлов справок для форм — то к ним применимы те же слова: вы можете выставлять свойства программно:

procedure TForm1.FormCreate(Sender: TObject);
begin
  HelpFile := ExtractFilePath(Application.ExeName) + 'Help\MainForm.hlp';
end;

или через инспектор объектов:

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

to topПоддержка справки в Delphi программах

Как только Delphi приложение узнает, что у него есть файл справки, оно даст вам семь стандартных способов показать справку:

  1. Нажатие F1
    Эта функция реализует контекстую справку. Когда пользователь нажимает F1, приложение ищет в файле справке тему (topic) с номером контекста (context number) или ключевым словом (keyword), заданными в свойствах компонента, имеющего фокус. Если найдена одна или несколько тем — то открывается файл справки, показывая эти темы в отдельном окне.
  2. Кнопка с вопросиком в заголовке окна

    Эта кнопка активирует контекстно-зависимый режим справки на форме — так называемая функция «What’s this?» («Что это такое?»). Когда пользователь нажимает на эту кнопку, форма временно отключается, а курсор меняет форму на стрелочку с вопросиком:

    Нажатие на любом элементе управления в этом режиме заставит приложение выполнить поиск темы в файле справки, ассоциированной с этим компонентом. Если тема найдена, то она будет показана во всплывающем окошке.

    Обычно этот способ не используется в современных программах. Исторически он появился в 16 разрядных Windows, когда ещё не было всплывающих подсказок. Сегодня же вместо этого функционала намного проще использовать обычное свойство Hint.

  3. Кнопка «Справка» с Kind = bkHelp

    Это простой способ вызвать справку, не создавая ни строчки кода. Нажатие на кнопку откроет тему с номером контекста или ключевым словом, заданными в свойствах либо самой кнопки, либо (обычно) формы.

  4. Application.HelpCommand
    Это гибкий метод, который позволяет вам выполнить любую команду с вашим файлом справки. Подробнее эта команда рассмотрена ниже.
  5. Application.HelpJump
    Это вспомогательная функция, которая является обёрткой к Application.HelpCommand с командой «jump». Она позволяет вам отобразить тему справки по её ID (имени).
  6. Application.HelpContext
    Это вспомогательная функция, которая является обёрткой к Application.HelpCommand. Она позволяет вам показать тему по так называемому номеру контекста (context number).
  7. Application.HelpKeyword
    Это вспомогательная функция, которая является обёрткой к Application.HelpCommand. Она позволяет вам показать тему по ключевому слову (keyword).

Функции 1, 2 и 3 работают автоматически. Вам не нужно ничего делать, кроме как привязать темы справки к компонентам (через номера контекстов или по ключевым словам). Как сделать такую привязку — чуть позже…

to topПрактика: простой вызов справки

… а пока мы разберём самые простые методы работы со справкой — показ фиксированных окон и тем без учёта контекста, используя последние четыре метода из списка в предыдущем пункте.

Каждое серьёзное Windows приложение имеет пункт меню «Справка» вроде такого:

Или хотя бы такого:

Когда вы нажимаете на подобные пункты меню — появляется окно, называемое (в терминах Microsoft) «Finder». Оно выглядит как-то так:

Или так (в этом случае окно Finder включает в себя и окно с темой):

Или так:

Как открыть справку

Итак, как вам открыть окно Finder? На самом деле, это очень просто: поместите этот код в обработчик нажатия пункта меню:

procedure TForm1.miHelpContentsClick(Sender: TObject);
begin
  Application.HelpCommand(HELP_FINDER, 0);
end;

Этот код покажет окно Finder на той вкладке, которая была открыта в последний раз.

Как открыть оглавление справки

Оглавление (Table Of Contents) — это первая вкладка окна Finder. Это так же просто, как открыть окно Finder, но команда будет выглядеть так:

procedure TForm1.miHelpContentsClick(Sender: TObject);
begin
  Application.HelpCommand(HELP_TAB, 0);
end;

Примечание: в некоторых версиях Delphi константа HELP_TAB не определена. В этом случае добавьте в подходящее место программы это определение:

const
  HELP_TAB = 15;

Примечание: в зависимости от используемой справочной системы эта команда также может сразу отобразить и тему по умолчанию.

Как открыть тему по умолчанию

Тема по умолчанию — это тема, которая была указана как тема по умолчанию в настройках файла справки. Если таковой не указано, то темой по умолчанию считается первая тема в оглавлении. Команда для открытия темы по умолчанию выглядит так:

procedure TForm1.miHelpDefaultClick(Sender: TObject);
begin
  Application.HelpCommand(HELP_CONTENTS, 0);
end;

Историческая справка
Что происходит, когда вы открываете старый файл справки из 16 битных Windows? Открывается окно, показывающее тему. Эта тема называется темой по умолчанию (default topic).

32 битный файл справки формата WinHelp состоит из двух файлов (16 битный — из одного): .HLP, который содержит темы и оглавление — .CNT. Если вы удалите .CNT файл и откроете .HLP файл, то увидите тему по умолчанию.

В прошлом веке, когда Windows 3.x ещё была передовыми технологиями, тема по умолчанию была единственным способом показать какой-то обзор (содержание). Эта тема обычно была первой темой в файле справки и содержала ссылки на другие темы. Вот почему Microsoft называла её «CONTENTS» (Оглавление). Если эта тема явно не задана, то темой по умолчанию считается первая тема в файле справки.

Вот почему команда

Application.HelpCommand(HELP_CONTENTS, 0);

НЕ покажет вам содержание, несмотря на название «CONTENTS». Это команда для открытия темы по умолчанию.

Как открыть индекс справки

Вкладка индекс (Index) показывает алфавитный список ключевых слов (keyword). Ключевые слова должны быть заданы в свойствах тем. Если ключевые слова вообще не определены — эта вкладка не показывается.

Следующий пример показывает, как можно открыть справку на вкладке индекса:

procedure TForm1.ShowKeywordIndex;
var
  Command: array[0..255] of Char; // примечание: этот код также работает с D2009+
begin
  Command := 'SEARCH()';
  Application.HelpCommand(HELP_FORCEFILE, 0);
  Application.HelpCommand(HELP_COMMAND, Longint(@Command));
end;

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

Как открыть поиск по справке

Вкладка поиска (Find) показывает диалог полнотекстового поиска по справке. Если в файле справки отключены возможности полнотекстового поиска, то эта вкладка вообще не показывается.

Следующий пример открывает окно справки с активным окном поиска:

procedure TForm1.ShowFullTextSearch;
var
  Command: array[0..255] of Char; // примечание: этот код также работает с D2009+
begin
  Command := 'FIND()';
  Application.HelpCommand(HELP_FORCEFILE, 0);
  Application.HelpCommand(HELP_COMMAND, Longint(@command));
end;

Как открыть тему по имени

Для показа темы по имени вы можете использовать метод Application.HelpJump, который принимает один строковый параметр — ID (имя) темы. Например:

procedure TForm1.ShowTopicByName;
begin
  Application.HelpJump('mytopic');
end;

Этот метод возвращает True, если тема существует и была найдена, и False — в противном случае. Однако, в последнем случае также автоматически показывается сообщение пользователю о том, что тема не существует.

Если в вашей Delphi команды HelpJump нет, то вот её код:

function TForm1.HelpJump(const JumpID: string): Boolean;
var
  Command: array[0..255] of Char;
begin
  Result := True;
  if InvokeHelp(HELP_CONTENTS, 0) then
  begin
    StrLFmt(Command, SizeOf(Command) - 1, 'JumpID("","%s")', [JumpID]);
    Result := Application.HelpCommand(HELP_COMMAND, Longint(@Command));
  end;
end;

Как открыть тему по номеру контекста

А для показа темы по контекстному номеру вы можете использовать метод Application.HelpContext, который принимает один числовой параметр — номер контекста. Например:

procedure TForm1.ShowTopicByNumber;
begin
  Application.HelpContext(2);
end;

Аналогично, этот метод возвращает True, если тема существует и была найдена, и False — в противном случае.

Если в вашей Delphi команды HelpContext нет, то вот её код:

function TForm1.HelpContext(const AContext: Integer): Boolean;
begin
  Result := Application.HelpCommand(HELP_CONTEXT, AContext);
end;

Обычно вы не вызываете эту команду вручную — ведь вы можете просто ассоциировать компонент с темой, используя свойства (про это — ниже).

Эта команда покажет тему в отдельном окне. Если вы хотите использовать всплывающее окно — используйте другую команду:

procedure TForm1.ShowTopicByNumberInPopup;
begin
  Application.HelpCommand(HELP_CONTEXTPOPUP, 2);
end;

Как открыть тему по ключевому слову

Интересовались ли вы когда-нибудь, как работает справка среды Delphi? Когда вы выделяете свойство компонента в инспекторе объектов или устанавливаете на него курсор в коде и нажимаете F1, то вы получаете описание этого свойства.

Это работает при помощи ключевых слов. Когда вы нажимаете F1, в справке ищутся темы с ключевым словом, которое указано под курсором или в инспекторе объектов. Для этого файл справки должен содержать список ключевых слов, ассоциированных с темами. Вы задаёте это при создании файла справки (указывая ключевые слова в свойствах темы).

Для показа темы по ключевому слову используется метод Application.HelpKeyword, который принимает один строковый параметр — ключевое слово. Например:

procedure TForm1.ShowTopicByKeyword;
begin
  Application.HelpKeyword('example');
end;

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

procedure TForm1.ShowTopicByNestedKeyword;
begin
  Application.HelpKeyword('root  sub');
end;

Если в вашей Delphi команды HelpKeyword нет, то вот её код:

function TForm1.HelpKeyword(const AKeyword: String): Boolean;
var
  Command: array[0..255] of Char;
begin
  StrLcopy(Command, PChar(AKeyword), SizeOf(Command) - 1);
  Result := Application.HelpCommand(HELP_KEY, Integer(@Command));
end;

А как теперь закрыть справку

Нет ничего проще:

procedure TForm1.CloseHelp;
begin
  Application.HelpCommand(HELP_QUIT, 0);
end;

to topПрактика: вызов справки с контекстом

Контекстная справка (context sensitive help или contextual help) даёт мгновенную поддержку пользователям, не заставляя их покидать контекст, в котором они работают. Она показывает информацию о конкретном объекте, с которым работает пользователь. Обычно она отвечает на вопросы вроде «Что это такое?», «Зачем это использовать?» и «Что и как с этим делать?». Она очень полезна именно тем, что пользователь не отключается от процесса работы. Основные способы для контекстной справки включают в себя:

  • Контекстные темы в файле справки
  • Кнопки вызова справки (например, кнопка Help рядом с OK и Cancel в диалогах)
  • Всплывающие подсказки (показываются при наведении мыши на объект)
  • Сообщения в строке статуса (StatusBar)

Когда я говорю про контекстную справку в этом посте, я имею в виду первые два пункта. Вторые два пункта в этой статье не рассматриваются. Второй пункт реализуется либо ручным вызовом справки одним из методов, которые мы рассмотрели выше, либо назначением кнопки вида (Kind) bkHelp (обработчик при этом реализовывать не требуется).

Итого, сейчас нам осталось поговорить про первый пункт.

Как включается контекстная справка

Контекстная справка обычно вызывается одним из трёх основных способов:

  • Нажатие F1, когда фокус ввода находится на каком-то элементе управления. Это основной способ показа контекстной справки. Когда пользователь застревает, он нажимает F1, а программа показывает ему тему справки, в зависимости от того, где он находится. Этот способ поддерживается Delphi и вам не нужно писать для него код.
     
  • Функция «What’s this?». Это либо кнопка с вопросиком в заголовке окна, либо аналогичная кнопка с вопросиком на панели инструментов (Toolbar-е), либо пункт меню Справка/Что это такое?. Как я уже говорил, это старый режим работы со справкой. Я не буду его особо рассматривать, потому что в современных программах гораздо проще и удобнее использовать всплывающие подсказки.
     
  • Кнопка с Kind = bkHelp или аналогичный способ. Этот способ нельзя полностью отнести к контекстой справке — ведь когда вы щёлкаете на кнопку, то фокус уходит с текущего элемента управления. Тем не менее, я перечисляю этот способ, как ещё один вариант автоматического вызова справки без написания кода.
     

Как реализуется контекстная справка

Показ темы в контекстно-зависимой справке требует идентификации темы по числовому номеру, называемому номером контекста (context number). В более поздних версиях Delphi также возможен показ контекстой справки по ключевым словам. По умолчанию в файле справки не задаются ни номера контекстов, ни ключевые слова. Вы должны либо вводить их вручную, либо (только для номеров контектов) вы можете включить в опциях автоматическую нумерацию (в некоторых продвинутых редакторах файлов справок, типа Help & Manual).

Возможно, вы уже заметили эти свойства в инспекторе объектов — это свойство HelpContext и свойство HelpKeyword:

Свойство HelpType определяет, какое свойство нужно использовать для вызова контекстной справки. Обычно используются номера контекстов, а не ключевые слова — этот вариант является вариантом по умолчанию для свойства HelpType.

Для работы контекстной справки или эти номера (не важно — созданные вами или проставленные автоматически) или ключевые слова должны быть присвоены темам и установлены в свойства компонентов на форме. Номера должны быть уникальны как в файле справки, так и в Delphi проекте. Вы можете присвоить один и тот же номер двум и более компонентам — но это будет означать, что эти компоненты привязаны к одной и той же теме. В отличие от номеров контекста, ключевые слова не обязаны быть уникальными. Если с одним ключевым словом связано более одной темы, то вам будет показано окно, из которого вы сможете выбрать нужную тему.

Когда пользователь вызывает контекстную справку (любым из способов, описанных в предыдущем пункте — либо через F1, либо через функцию «What’s this?», либо кнопкой «Справка») — то показывается тема справки, контекстный номер которой указан в свойстве HelpContext. Либо же, если HelpType установлено в htKeyword, то показывается тема(ы) с ключевым словом из свойства HelpKeyword. Для работы контекстной справки вам не нужно делать ничего, кроме как проставить номера контекстов темам и компонентам. Всю работу Delphi сделает автоматически.

Вам не нужно проставлять номера контекстов или ключевые слова абсолютно всем компонентам на форме — ведь свойства HelpContext и HelpKeyword наследуется. Т.е. если вдруг у компонента нужное свойство не задано (равно нулю или пустой строке соответственно), то используется свойство HelpContext/HelpKeyword его родителя (в смысле Parent). Если же это свойство не задано и у родителя — то проверяется свойство родителя родителя. И так далее, вплоть до формы. Если же свойство не задано и у формы, то контекстная справка вообще не вызывается. Если вы используете кнопку вызова справки с Kind = bkHelp, то вы обязаны присвоить номер контекста или ключевое слово либо ей, либо форме.

Итак, суммируя: чтобы в вашей программе работала контекстная справка, вам нужно:

  1. Вы должны указать приложению, что у вас есть файл справки. Это общее действие для любого типа справки в Delphi приложении.
  2. Вы должны придумать и присвоить номера контекстов (либо ключевые слова, либо и то и другое) темам в вашем файле справки. Необязательно делать это для всех тем. Если ключевые слова желательно проставлять вообще (для работы индекса), то номера контекстов можно указывать только у тех тем, которые должны быть доступны через контекстную справку. Вы можете включить автоматическую нумерацию, если ваша программа для создания файлов справок это позволяет.
  3. Вы должны присвоить контекстные номера (либо ключевые слова) форме и компонентам на ней в вашем Delphi приложении, чтобы ассоциировать элементы управления в приложении с темами справки. Как минимум, вы должны указать эти номера (ключевые слова) для форм.

Готово. После этого в вашей программе будет работать контекстная справка. Вы можете открыть вашу программу и, к примеру, нажать F1 — автоматически откроется тема в справке, которую вы задали в свойствах текущего элемента управления.

to topОбзор распространённых форматов файлов справок

На сегодняшний день существуют такие форматы справок (из самых распространённых):

  • 16 битный Windows Help aka WinHelp 1.0 (.HLP) — проприетарный формат файлов справки, разработанный компанией Microsoft для организации справочной системы. Исходная информация подготавливается в форматах RTF (текст) и BMP (изображения), а затем с использованием компилятора генерируется бинарный файл с расширением HLP. Поддержки Unicode нет. Может быть декомпилирован в исходные файлы. Разработан в 1990 и поддерживается в Win16, Win32, WinNT до XP включительно. Устарел в 1995. Ограничено доступен в Windows Vista, Windows 7, Windows 8 и Windows 8.1 — поддержка для него должна быть установлена дополнительно. Не доступен в Windows 10 и выше. Сегодня в здравом уме не используется никем.
  • 32 битный Windows Help aka WinHelp 2.0-4.0 (.HLP + .CNT) — улучшенный вариант формата .HLP, появившийся в Windows 95. Поддерживается в Win32/WinNT до Windows XP включительно. Поддержки Unicode нет. Устарел в 2006. Ограничено доступен в Windows Vista, Windows 7, Windows 8 и Windows 8.1 — поддержка для него должна быть установлена дополнительно (в этот run-time не включены некоторые возможности — например, макросы). Не доступен в Windows 10 и выше. Сегодня в основном используется старыми приложениями или теми, кому нужны специальные функции формата WinHelp.
  • Compiled HTML Help aka HTML Help 1.0-1.4 (.CHM) — основной и самый популярный формат файлов справок, выпущенный в 1997 и поддерживаемый начиная с Windows 98 во всех Windows, включая Windows Vista, Windows 7, Windows 8, Windows 8.1 и Windows 10. Представляет собой скомпилированный файл, полученный из обычных HTML-файлов со специальной разметкой. По этой причине формат стал популярным для создания e-books. Может быть декомпилирован в исходные файлы. Однако в этот формат уже не вносятся изменения и новые возможности, а лишь устраняются найденные уязвимости. Последняя (актуальная) версия формата: 1.4. Microsoft планирует заменить его на какой-нибудь другой формат в будущем. Поддержка Unicode ограничена.
  • Assistance Platform 1.0 (.H1S) — достаточно специфичный формат справки, поскольку используется только для расширения встроенной справки самой ОС OEM партнёрами. Понятно, что он не предназначен для общего использования.
  • Microsoft Help aka HTML Help 2.0 (.HXS) — формат справки, используемый Visual Studio 2002/2003/2005/2008 и последними версиями Delphi. Разработан в 2001. Поддерживает Unicode. Сжатый файл .HxS получается из набора тем, написанных в HTML (похоже на .CHM). В отличие от всех прочих форматов, этот формат справки НЕ предназначен для программ общего назначения. Дело в том, что просмотрщик справки этого формата (DExplore — «Document Explorer») не входит в комплект ни одной ОС Windows на сегодняшний день. Поддержка справки этого формата (run-time) устанавливается только вместе с Visual Studio или Delphi. Плюс ко всему вы не можете таскать вместе со своей программой установщик для этой справки (согласно лицензии).
  • Microsoft Help System 1.x aka HTML Help 3.0 (.MSHC) — формат справки, используемый Visual Studio 2010. Не путать с Microsoft Help (.HXS)! Разработан в 2009. Поддерживает Unicode. Аналогично формату HTML Help 2.0/HXS — НЕ предназначен для программ общего назначения, хотя ограничений на просмотрщик уже нет (справку можно просматривать в любом браузере), но run-time по прежнему требуется. Файл .MSHC является обычным переименованным .ZIP файлом. Компилятор не требуется — файлы содержимого, содержащие ссылки друг на друга, просто укладываются в архив. Сильные стороны формата: открытость, быстрота, простота и прозрачная интеграция с online-справкой.
  • Microsoft Help System 2.x (.MSHC) — формат справки, используемый Visual Studio 2012 (VS11), 2013 и 2015, а также в Windows 8, 8.1 и, частично, Windows 10. Не путать с Microsoft Help (.HXS)! Не путать с HTML Help 2.0! Разработан в 2012. По сути, это тот же формат, что и предыдущий (Help System 1.x/HTML Help 3.0), основанный на .MSHC файлах (т.е. переименованный .ZIP). Формат файлов не меняется (обратно-совместим), меняется только run-time (API заменён на COM-интерфейсы). Более того, этот run-time теперь является встроенным в Windows, начиная с Windows 8 (Windows.Help.Runtime.dll) — хотя встроенный в Windows просмотрщик (viewer) является базовым и не имеет многих возможностей полноценного просмотрщика, поставляемого с Visual Studio 2012. Предполагается, что разработчики будут создавать свои решения на основе предлагаемого COM API. Этот формат справки имеет потенциал заменить собой .CHM и стать новой стандартной системой справки в будущем.
  • HTML (.HTML) — представляет собой просто набор обычных HTM/HTML файлов. Понятно, что такой формат достаточно ограничен и обычно не имеет никаких преимуществ перед .CHM — окромя полной поддержки Unicode.
  • Portable Document Format (.PDF) — формат, созданный Adobe Systems в 1993. Обычно этот формат используется для печати справки (ещё точнее — руководства) на бумаге, а не как файл справки в программе.
  • Web/Online — вообще не файловая справка. Представляет собой открытие web-сайта со страничкой справки на нём.

Официально рекомендации Microsoft на октябрь 2010-го выглядят так:

  • Не используйте .HLP.
  • Для программ общего назначения используйте .CHM.
  • Если вы OEM партнёр MS, который хочет расширить центр справки и поддержки Windows в Windows Vista или Windows 7 — то используйте .H1S.
  • Если вам нужна интеграция в справочную систему Visual Studio 2002 – 2008 (примечание от меня, не от MS: или Delphi), то используйте .HxS.
  • Если вам нужна интеграция в справочную систему Visual Studio 2010 — 2015, то используйте .MSHC.
  • .H1S, .HxS и .MSHC не доступны для программ общего назначения, а .HLP устарел.

P.S. Начиная с Windows 8 в ОС есть run-time для .MSHC, но нет толкового просмотрщика. Документация в MSDN скудна, а перспективы формата — туманны.

Итак, если подытожить — для Delphi программ у вас есть выбор из трёх вариантов:

  • .HLP (WinHelp 4.0)
  • .CHM (HTML Help 1.x)
  • Web/Online

Из них .CHM и Web/Online являются основными, а .HLP используется только в особых случаях. Учтите, что справка в .HLP не будет работать на Windows 10 и более поздних системах, а для её работы в Windows Vista, Windows 7, Windows 8 и Windows 8.1 пользователю необходимо вручную установить недостающие компоненты операционной системы (они обрезаны, нет поддержки макросов, например).

to topПоддержка форматов справки в Delphi

.HLP

Поддержка этого формата есть во всех версиях Delphi. В Delphi 7 и ниже вам ничего специально делать не надо. В Delphi 2005 и выше вам нужно подключить модуль WinHelpViewer в любую секцию uses.

.CHM

Штатная поддержка этого формата есть в Delphi 2005 и выше. Для этого вам нужно только указать в любом uses модуль HTMLHelpViewer (как обычно: чем раньше — тем лучше).

Примечание: не подключайте одновременно WinHelpViewer и HTMLHelpViewer. Либо первый, либо второй, либо ни один, но не оба сразу.

Для Delphi 7 и ниже вы можете использовать моё решение. Использовать его не менее просто — просто распакуйте архив в папку вашего проекта и добавьте модуль HTMLHelpViewerEx в любой uses вашего проекта.

Это решение также может быть использовано в Delphi 2005 и выше, если вас не устраивает стандартное решение (модуль HTMLHelpViewer). И снова: подключайте в uses только один модуль (либо WinHelpViewer, либо HTMLHelpViewer, либо HTMLHelpViewerEx, либо ни одного).

См. табличку ниже для сравнения возможностей форматов и их реализации.

Web/Online

Поскольку стандарта на эти системы справок не существует, то в Delphi нет никакой стандартной поддержки справки этого формата. Вам придётся делать её самостоятельно. Проще всего это сделать, назначив обработчик события Application.OnHelp. В обработчике вам нужно организовать реакцию на команды, которые реально использует ваше приложение, например:

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    function ApplicationHelp(Command: Word; Data: Longint; var CallHelp: Boolean): Boolean;
    ...
  end;

...

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnHelp := ApplicationHelp;
end;

function TForm1.ApplicationHelp(Command: Word; Data: Longint; var CallHelp: Boolean): Boolean;

  procedure OpenURL(const AURL: String);
  var
    SEI: TShellExecuteInfo;
  begin
    FillChar(SEI, SizeOf(SEI), 0);
    SEI.cbSize := SizeOf(SEI);
    {$IFDEF UNICODE}
    SEI.fMask := SEE_MASK_UNICODE;
    {$ENDIF}
    SEI.Wnd := Handle;
    SEI.lpVerb := 'open';
    SEI.lpFile := PChar(AURL);
    SEI.nShow := SW_SHOWNORMAL;
    if not ShellExecuteEx(@SEI) then
      RaiseLastOSError;
  end;

var
  DataStr: String;
begin
  // Пока установим признак успешного выполнения
  Result := True;

  case Command of
    // Открытие заголовочной страницы
    HELP_FINDER, HELP_TAB, HELP_CONTENTS:
      OpenURL(Application.HelpFile);
    // Поиск по ключевому слову
    HELP_KEY:
      OpenURL(Application.HelpFile + '?q=' + PChar(Data));
    // Открытие темы по номеру
    HELP_CONTEXT, HELP_CONTEXTPOPUP:
      OpenURL(Application.HelpFile + '/article' + IntToStr(Data) + '.html');
    // Расширенные команды:
    HELP_COMMAND:
    begin
      DataStr := PChar(Data);

      // Открытие индекса
      if StartsStr('SEARCH(', DataStr) then
        OpenURL(Application.HelpFile)
      else
      // Открытие поиска
      if StartsStr('FIND(', DataStr) then
        OpenURL(Application.HelpFile)
      else
      // Переход к теме по её имени
      if StartsStr('JI(', DataStr) then
      begin
        // Обрезали 'JI('
        DataStr := Trim(Copy(DataStr, 4, MaxInt));
        // Обрезали ')'
        SetLength(DataStr, Length(DataStr) - 1);

        OpenURL(Application.HelpFile + '/' + DataStr + '.html');
      end
      else
      // Прочие команды - считаем поиском по ключевому слову
        Result := ApplicationHelp(HELP_KEY, Integer(DataStr), CallHelp);
    end;
    // HELP_QUIT: - здесь можно закрыть окно браузера
    // ... <- тут прочие команды, если надо
  else
    // Все прочие команды обрабатывать не умеем - указываем, что завершились неудачно
    Result := False;
  end;

  // Мы сделали всю работу, делать больше нечего
  CallHelp := False;
end;

Обычно ключевыми командами являются HELP_KEY (а также её обёртка через HELP_COMMAND), HELP_CONTEXT/HELP_CONTEXTPOPUP, HELP_COMMAND с командой 'JI', а также какая-то команда «открытия справки вообще» (например, HELP_FINDER).

Событие Application.OnHelp вызывается при выполнении любой команды со справкой в вашей Delphi программе, позволяя вам отреагировать на неё и открыть web-страничку.

Только не забудьте установить свойство HelpFile! Иначе Delphi программа будет считать, что у вас нет справки. Вы можете установить в это свойство URL справочной системы (как это предполагается в примере выше). К примеру, для примера выше вы можете установить свойство в 'http://www.google.com/search'. Только понятно, что открытие темы по контекстному номеру или имени работать не будет. Зато открытие темы по ключевому слову приведёт к поиску этого слова в Google.

Сравнение возможностей форматов

Как я говорил выше, поддерживается ли та или иная команда — зависит от выбранного формата и версии Delphi. Я просуммирую основные возможности, которые мы рассматривали, на примере Delphi 7 и Delphi XE. Для наглядности, я добавил колонку с web-справкой, где + и — стоят по примеру чуть выше. Вы должны понимать что это только пример и ваша конкретная реализация может иметь как больше возможностей, так и меньше.

Я думаю, что табличка достаточно понятна, за исключением колонки D7/DXE — это я так обозначил стороннее (не штатное) решение с подключением модуля HTMLHelpViewerEx.

Возможность .HLP .CHM Web
Команда или метод Описание Delphi 7 Delphi XE Delphi 7 Delphi XE D7/DXE Пример выше
HelpJump Тема по ID + + + + +
HelpContext Тема по контексту + + + + +
HelpKeyword Тема по ключевому слову 1 1 + + +
HELP_CONTENTS Тема по умолчанию + + + + +/-
HELP_FINDER Открыть окно справки + + + +/-
HELP_TAB Содержание + + + +/-
SEARCH() Индекс + + + +/-
FIND() Поиск + + + +/-
HELP_QUIT Выход + + +

+ означает поддержку возможности, означает отсутствие поддержки, +/- означает, что сама команда работает, но её результат ничем не отличается от обычного открытия справки, а цифра — частичную поддержку (баг) со ссылкой на обходной путь (код ниже).

Исправление/обходной путь для

1:

procedure TForm1.btByKeywordClick(Sender: TObject);
var
  SaveOld: String;
  OldDir: String;
begin
  SaveOld := Application.HelpFile;
  OldDir := GetCurrentDir;
  try
    ChDir(ExtractFilePath(Application.HelpFile));
    Application.HelpFile := ExtractFileName(Application.HelpFile);

    Application.HelpKeyword('example');

  finally
    Application.HelpFile := SaveOld;
    SetCurrentDir(OldDir);
  end;
end;

to topВажное примечание: модальные окна

К сожалению, в Delphi имеется довольно неприятная особенность. Вспомните, как Delphi реализует модальные окна: она перебирает все окна и отключает (disable) их, после чего показывает (якобы модальное) окно обычным образом и делает локальный цикл выборки сообщений. Отключенные окна не реагируют на ввод пользователя, поэтому создаётся эффект модальности.

Проблема состоит в том, что среди отключаемых окон может находится и окно справки. Иными словами, если вы показываете какое-либо окно модально — то оно будет модально и по отношению к уже открытому окну справки. В результате вы просто не сможете работать с окном справки, визуально оно как бы «висит».

Мне не приходит в голову удачного решения этой проблемы, кроме как не использовать модальные окна или закрывать окно справки перед показом модального окна. На StackOverflow есть решение, но оно, на мой взгляд, не корректно: предлагается не вызывать HH_INITIALIZE, но этого строго требует документация MSDN. Вы можете попробовать закомментировать строчки с HH_INITIALIZE/HH_UNINITIALIZE, но делаете вы это на свой страх и риск.

to topЗаключение

Надеюсь, что эта статья поможет вам с интеграцией справки в ваши программы.

В этом руководстве были рассмотрены стандартные возможности использования справочных систем в Delphi, универсальные для любых установленных систем. Однако возможности конкретного формата справки этим не исчерпываются. К примеру, вы можете позиционировать окна справки (ну, например, так, чтобы окно справки всегда было сбоку вашего главного окна), вы можете получать обратную связь от окна справки (к примеру, нажатие на ссылку или кнопку в окне справки приводит к действию в вашей программе) и делать множество других вещей, недоступных через общий механизм в Delphi. Все эти расширенные возможности реализуются обращением к справочной системе напрямую, минуя обёртку Delphi. См. ссылки ниже для дополнительной информации. К примеру, для формата .CHM вас будет интересовать SDK и руководство по продвинутому использованию .CHM.

Если у вас всё ещё есть вопрос, а как же создавать сами файлы справки, то я вам рекомендую воспользоваться программой Help & Manual — это лучшее решение для создания справки в форматах HLP, CHM, HXS, PDF, HTML, RTF и E-book.

Вы можете создавать файлы справки в HLP и CHM и вручную, используя только бесплатные компиляторы (Microsoft Help Workshop и HTML Help Workshop соответственно).

См. также:

  1. Создание файлов справки:
    • Создание .CHM в Help & Manual.
    • Как создать CHM файл (HTM2CHM и HTML Help Workshop в действии).
    • Создание .HLP и .CHM вручную.
    • Создание справки в блоге WebDelphi.ru (часть 1, часть 2, часть 3).
    • Создание справки на Королевстве Delphi.
  2. Использование файлов справки:
    • Microsoft:
      • HTML Help 1.4 SDK на MSDN.
      • Список команд HTML Help с описаниями в MSDN.
      • Список команд WinHelp с описаниями в MSDN.
      • Блог человека из команды справки в Windows.
    • Embarcadero:
      • Справка Delphi по использованию справки в своих приложениях.
      • Справка Delphi по справке.
    • The Helpware Group — весьма полезный сайт, где есть много утилит и информации по справочным системам — включая и по Delphi. Автор сайта — Rob Chandler, Microsoft Help MVP.
      • Delphi HH Kit — код для Delphi (доступ к HTML Help API в старых Delphi, багфиксы к VCL, примеры кода и т.п.).
      • Руководство по продвинутому использованию HTML Help 1.x в Delphi (PDF) — «Delphi Programming for the HTML Help API» от Robert Chandler.
      • FAR HTML — набор утилит для правки и создания справки.
      • H2Viewer — бесплатный (для личного использования) альтернативный просмотрщик файлов .HxS (аналог DExplore). Тем не менее, он требует установки того же back end-а, что и DExplore (MS Help 2 run-time).
      • H3Viewer — бесплатный (для личного использования) альтернативный просмотрщик файлов .MSHC. Тем не менее, он также требует установки run-time HTML Help 3.0 от Visual Studio.
      • Microsoft Help Viewer 2.0 — раздел, полностью посвящённый Help System 2.x (документация, примеры кода — включая реализацию базового просмотрщика).
    • LCL Lazarus. Разработка справочной системы.

Цель работы: Изучение
атрибутов файла; изучение информационной технологии назначения приложений для
различных видов документов; изменение объемов файлов для их оптимального хранения
и передачи.

 Задания к практической работе

Задание
1.
Определите тип файла по заданному расширению.
Укажите пример программного приложения, которое может быть использовано для
работы с документами указанного типа. Ответы запишите в виде табл.
2

Табл. 2

Пример

Тип файла

Пример программного приложения

ACDSee9.exe

исполнительный

windows

Command.com

исполнительный

windows

Резюме.doc

текстовой

word

Каталог.xls

Файл в виде электронных таблиц

excel

Рецензия.txt

текстовой

word

Выступление.ppt

презентации

Microsoft power point

Книга.htm

Веб страницы

Web браузер

Книга.html

Веб страницы

Web браузер

Windows.hlp

Справка

Справка

Картина.bmp

графический

paint

Обложка.jpg

Графический

paint

Светофор.tif

графический

paint

Техникум.gif

звуковой

paint

Студент.mp3

Видеофайл

Mp3 плеер

Праздник.mpeg

видеофайл

Windows media player

Урок.avi

архив

Windows media player

Реферат.zip

архив

Архиватор

Реферат.rar

архив

Архиватор

Задание 2. Определите размер
архива, если исходный размер папки равен 1, 25 МБ, а степень сжатия 90%.

1.25/100=х/90
(1.25*90) / 100=х
х=0.125

Ответ: 0.125 Мб

Задание 3. Рассчитайте время передачи файла по
интернету, если скорость соединения 128 кбит/сек, а объём файла 3 Мбайт.
Используется формула   

Дано:
I = 3 Мбайт = 3072 Кбайт
V = 128 Кбит/с = 16 Кбайт/c
Найти: t — ?
t=I / V

t = 3 Мбайт / 128 Кбит/с = 3072 Кбайт / 16
Кбайт/с = 192 с.

Задание 4. Если скорость сети
Интернет 512 кбит/сек, то какой объем файла можно скачать за 1,5 мин.

1,5 мин=90 с

512 кбит/с*90 с=46080 кбит

46080 кбит/8=5760 кбайт=5,76 Мбайт

Задание 5. Записать
полное имя файла на левой панели на рис. 1.

Задание 6. Назначить приложения
для обработки документов.

Задание 7. Выполните задания на компьютере

Рисунок 1

Желательно, чтобы каждая программа имела справочную систему, при помощи которой пользователь мог получить исчерпывающую информацию о программе, о том, как с ней работать. Справочная система представляет собой набор файлов определенной структуры, использую которые программа Winhelp, являющаяся составной частью Windows, выводит справочную информацию, которая находится в hlp-файле.

Окно справки имеет меню и панель инструментов, позволяющие работать со справочными файлами. В зависимости от ситуации отдельные кнопки могут быть неактивны. Кроме того, разработчик справочной системы с помощью макрокоманд может изменить состав меню и панели инструментов. Создать hlp-файл можно при помощи программы Microsoft Help Workshop, исходными данными для которой является текст справки, представленный в виде rtf-файла.
Процесс создания справочной системы (hlp-файла) можно представить как последовательность следующих двух шагов:

  • Подготовка справочной информации (создание файла документа справочной информации).
  • Преобразование файла справочной информации в файл справочной системы.

Файл документа справочной системы представляет собой rtf-файл определенной структуры. Создать rtf-файл справочной информации можно при помощи любого редактора, позволяющего работать с документами формата RTF, в том числе с помощью Microsoft Word. Документ может содержать графические изображения и таблицы, стилевое и шрифтовое оформление. Кроме собственно справочной информации, в него включаются управляющие данные, например, определяющие взаимосвязи между разделами документа. Сначала нужно набрать текст заголовков справки, оформив заголовки одним из стилей «Заголовок», например Заголовок 1. При этом текст каждого раздела должен находиться на определенной странице документа (заканчиваться символом «разрыв станицы»). Раздел представляет собой фрагмент справочной системы, отображаемой в окне Winhelp. Если размер окна недостаточен для отображения раздела целиком, у окна появляется горизонтальная или вертикальная полосы прокрутки. Каждый раздел справки оформляется отдельным разделом документа. Справочный файл имеет оглавление, или начальный раздел, который при иерархической организации справки выполняет роль корневого раздела. После того как текст разделов будет набран, нужно, используя сноски, пометить заголовки разделов справочной информации (сноски используются компилятором справочной системы в процессе преобразования rtf-файла в hlp-файл, файл справки). Для того чтобы пометить заголовок раздела сноской, нужно установить курсор перед первой буквой заголовка раздела и из меню Вставка выбрать команду Сноска. В открывшемся диалоговом окне Сноски в группе Вставит сноску нужно установить переключатель в положение обычную, а в группе Нумерация — в положение другая. В поле ввода номера сноски следует ввести символ # и нажать кнопку ОК.

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

Сноска Назначение
# Задает идентификатор раздела справки, который может использоваться в других разделах для перехода к помеченному этой сноской разделу.
$ Задает имя раздела, которое будет применятся для идентификации раздела справки в списке поиска  и в списке просмотренных тем во время использования справочной системы.
K Задает список ключевых слов, при выборе которых из списка диалога поиска осуществляется переход к разделу справки, заголовок которой помечен этой сноской.

Примечание: Лучше, чтобы идентификатор раздела справки начинался с префикса IDH_. В этом случае во время компиляции rtf-файла будет проверена корректность ссылок на разделы справки. Компилятор выведет список идентификаторов, которые перечислены в разделе [MAP] файла проекта (см. ниже), но которых нет в rtf-файле.

Как правило, разделы справки содержат ссылки на другие разделы. В окне справочной системы понятия (слова), выбор которых вызывает переход к другому разделу справки, выделяются отличным от основного текста справки цветом и подчеркиваются. Во время подготовки текста справочной информации, слово-ссылку, при выборе которой происходит переход к другому разделу справки, следует подчеркнуть двойной линией. Сразу за ссылкой, без пробела, поместить идентификатор раздела справки, к которому должен быть выполнен переход. Вставленный идентификатор необходимо оформить как скрытый текст. При этом рисунки, как и текст, можно использовать для ссылки на другой раздел. Для этого рисунок соответствующим образом подчеркивается, а контекст раздела помещается сразу после рисунка. На предыдущим рисунке приведен вид окна редактора текста во время подготовки файла справочной информации. Слово «Заказчика» помечено как ссылка на другой раздел справки (здесь предполагается, что раздел справки, в котором находятся сведенья о заказчике, помечен сноской #, имеющий идентификатор IDH_1).

После того как создан файл справочной информации системы (rtf-файл), можно приступить к созданию справочной системы (hlp-файла). Для этого удобно воспользоваться программой Microsoft Help Workshop, которая находится в файле Hcw.exe; который поставляется отдельно или вместе с Delphi (или в C++ Builder) Запускается Microsoft Help Workshop через файл Hcw.exe.

После запуска программы Microsoft Help Workshop на экране появляется главное окно программы. Основным файлом компилятора является файл проекта, который объединяет такие элементы, как текстовые файлы справок, опции, номера контекстов, и позволяет создать из них справочный файл. Для того чтобы приступить к созданию справочной системы, нужно из меню File выбрать команду New, затем в открывшемся  диалоговом окне Project File Name указать тип создаваемого файла —  Help Project. Далее следует выбрать папку, где находится программа, для которой создается справочная система, и где уже должен находится файл документа справочной системы (rtf-файл). Затем в поле Имя файла нужно ввести имя файла проекта справочной системы. Файлу проекта присваивается расширение HPJ.

После нажатия кнопки Сохранить открывается окно проекта справочной системы. Элементы проекта представляют собой отдельные секции, имена которых отображаются заглавными буквами и заключены в квадратные скобки. Первоначально в проекте имеется только секция [OPTIONS], в которую включены параметры окна справки и вывода отчета о компиляции проекта.

Используя окно проекта справочной системы, можно добавить необходимые компоненты в проект, задать характеристики окна справочной системы, выполнить компиляцию проекта и пробный запуск созданной справочной системы. Для того чтобы добавить в проект файл справочной информации, нужно нажать на кнопку Files и в открывшемся диалоговом окне Topic Files — кнопку Add. В итоге открывается стандартное окно Открытие файла, позволяющее выбрать нужный rtf-файл.

В результате этих действий в окне проекта появится раздел [FILES], в котором будет указано имя файла справочной информации. Если справочная информация распределена по нескольким файлам, то операцию добавления файла нужно повторить. Для того чтобы задать характеристики главного окна справочной системы, надо в окне проекта нажать кнопку Windows. Появится окно Create a window. В поле Create a window named надо ввести main.

В результате нажатия на кнопку ОК появляется окно Window Properties, в поле Title bar text вкладки General которого нужно ввести заголовок главного окна создаваемой справочной системы.

Используя вкладку Position диалогового окна Window Properties, можно задать положение и размер окна справочной системы.

На вкладке Position находится кнопка Auto-Sizer, при нажатии которой открывается окно Help Window Auto-Sizer, размер и положение которого определяется содержимом полей вкладки Position. При помощи мыши можно менять размер и положение этого окна. После нажатия кнопки ОК координаты и размер окна Help Window Auto-Sizer будут записаны в поля вкладки Position.

Используя вкладку Color, можно задать цвет фона области заголовка раздела справки и области текста справки. Для этого надо нажать соответствующую кнопку Change и в стандартном окне Цвет выбрать нужный цвет.

Чтобы программа, использующая справочную систему, могла получить доступ к конкретному разделу справочной информации, нужно определить числовые значения для идентификаторов разделов, т.е. установить соответствия между номерами контекстов управляющих элементов приложения и разделами справочной системы. Что бы это сделать, надо в окне проекта справочной системы нажать кнопку Map, в результате чего откроется  диалоговое окно Map. В этом окне разработчик может выполнять такие операции, как добавление нового соответствия или удаление существующего. Соответствия отображаются построчно в виде пар значений, разделенных знаком равенства. Слева находится контекст раздела справочного файла(сноска, обозначенная символом #), а справа — номер контекста управляющего элемента приложения.

В этом окне нужно нажать кнопку Add и в поле Topic ID, открывшегося диалогового окна Add Map Entry, ввести идентификатор раздела справки, а в поле Mapped numeric value — соответствующее идентификатору числовое значение. В поле Comment модно ввести комментарий — название раздела справочной системы, которому соответствует идентификатор. Далее приведено окно проекта справочной системы после добавления rtf-файла, установки характеристик главного окна справочной системы и назначения числовых значений идентификаторов разделов.

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

В этом окне следует установить флажок Automatically display help file in WinHelp when done (Автоматически показывать созданную справочную систему по завершении компиляции), а затем нажать кнопку Compile. По завершении компиляции на экране появится окно с  информационным сообщение о результатах компиляции и, если компиляция выполнена успешно, окно созданной справочной системы. Созданный компилятором файл справочной системы (hlp-файл) будет помещен в ту папку, в которой находится файл проекта. Если сообщений об ошибках не было, то справочный файл содержит корректную информацию и готов к использованию. Однако если при компиляции были выявлены ошибки, то справочный файл все равно создается и может быть использован, однако отдельные его элементы, например ссылки, могут не работать или работать не правильно. Компилятор справочных файлов является MDI-приложением и может иметь несколько одновременно открытых дочерних окон. После выполнения компиляции такими окнами являются окно проекта т окно результатов компиляции, причем последнее располагается поверх окна проекта. Для продолжения работы над проектом необходимо закрыть окно результатов или переключится в окно проекта командой Window/Project Name, где Project Name — имя файла проекта.

Для создания полноценной справочной системы необходимо создать cnt-файл, в котором будут храниться названия тем и разделов справочной системы. В программе Help Workshop нужно создать новый проект File->New, в открывшемся диалоговом окне выберите тип создаваемого файла — Help Contents. Откроется окно проекта, в котором нужно заполнить поле Default filename — имя файла справки (RS.hlp) и Default title — заголовок окна справочной системы.

Для добавления темы нужно нажать кнопку Add Below — откроется диалоговое окно добавления тем и разделов. Под темой понимается то, что в справочной системе отображается как иконка закрытой книжки, щелчок на которой приведет к раскрытию выпадающего списка разделов справочной системы, а раздел в справочной системе отображается как иконка листа со знаком вопроса, щелчок на которой приведет к открытию соответствующего раздела. Добавить тему можно и с помощью кнопки Add Above — эти кнопки различаются тем, что при добавлении Add Above — раздел располагается выше выделенного раздела, а Add Below — ниже. Для добавления темы необходимо установить переключатель на Heading и заполнить поле Title — название темы.

При добавлении раздела, переключатель следует установить на Topic и заполнить поля Title — название раздела (Журнал оплаты); Topic ID — идентификатор раздела (IDH_5); Help file — имя файла помощи (RS.hlp); Window type — тип окна, в котором будет отображаться раздел (main).

После создания cnt-файла его нужно добавить в проект справки. Для этого надо открыть ранее созданный проект справочной системы, нажать кнопку Options и в открывшемся окне на вкладке Files в поле Contents file ввестиите имя cnt-файла.

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

Используя сноску $ можно задать названия разделов, которые будут отображаться на вкладке Поиск.

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

Для того, что бы во время работы программы пользователь, нажав клавишу F1, мог получить справочную информацию, надо чтобы свойство Файл справки формы содержало имя файла справочной системы, а свойство Идентификатор справки — числовой идентификатор раздела справочной информации, который должен быть выведен.

Файл справочной системы приложения лучше поместить в ту папку, в которой находится файл исполняемой программы. Это позволит использовать одно и то же значение свойства Файл справки  во всех экземплярах приложения и не помешает установке приложения в любую папку пользователя. Если в значении этого свойства не указан путь, Microsoft Access будет искать файл справочной системы в каталоге приложения. Если в момент нажатия клавиши F1 фокус находится на элементе управления, для которого не был создан пользовательский раздел справочной системы, то будет выведен раздел пользовательской справки для формы. Если раздел пользовательской справки для формы также отсутствует, открывается окно помощника по Office. Раздел пользовательской справки не может быть выведен на экран с помощью помощника.
Для создания файла справки можно использовать также Microsoft HTML Help Workshop- для создания файлов справочной системы в гипертекстовом формате.

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

  • Давать полное описание по вопросам использования программы.
  • Иметь графические материалы по вопросам использования программы.
  • Быть доступной для вызова из любой формы программы.
  • Иметь контекстные описания и удобную систему поиска информации.
  • Иметь минимально возможный размер.

Справочная система программного продукта пишется всей группой разработчиков проекта. Люди, отвечающие за информационное наполнение программы, пишут материалы о назначении программного продукта, дают описание информационного наполнения и рекомендации по использованию программы. Разработчики программного кода, дают описание функций программы, назначения элементов интерфейса и методов непосредственной работы. Также, программисты, производят сборку справочной системы и ее интеграцию в программу. Справочная система программы, проходит первичное тестирование. Целью первичного тестирования, является выявление недостатков, к которым относятся мертвые гиперпереходы в справочной системе, несоответствия описания — реальным программным интерфейсам и недостаточность предложенной информации, для работы с программой неподготовленного пользователя. Первичное тестирование, производится всей группой разработчиков программного продукта. Производится совместное чтение материалов собранной справочной системы. Все вопросы, предложения и замечания документируются. Затем следует общее обсуждение выявленных проблемных мест. Целью данного обсуждения, является определение списка необходимых исправлений в справочной системе.

  • Windows how to install fonts
  • Windows hello не работает сканер отпечатков
  • Windows hd color как выключить
  • Windows how to get screenshot
  • Windows history with never released versions