Статьи по Delphi - Help файлы, Работа с Help файлами |
Здравствуйте, гость ( Вход | Регистрация )
Here You Can Support Our Work and .:LavTeaM:. Services |
Статьи по Delphi - Help файлы, Работа с Help файлами |
![]()
Сообщение
#1
|
|
![]() Черный человек ![]() Группа: Модераторы Пользователь №: 9425 Сообщений: 729 Регистрация: 20.01.2005 Из: Междуреченск Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 11 раз(а) ![]() |
Вариант использования HTML Help в Делфи
Код // 1) После Uses... добавляешь: const HH_DISPLAY_TOPIC = $0000; HH_HELP_FINDER = $0000; // WinHelp equivalent HH_GET_WIN_HANDLE = $0006; HH_DISPLAY_TEXT_POPUP = $000E; // display string resource id or text in a popup window HH_HELP_CONTEXT = $000F; // display mapped numeric value in dwData HH_HELP_CONTEXTMENU = $0010; // text popup help // 2) Перед секцией Implementation добавляешь: function HtmlHelp( hwndCaller: HWND; pszFile: string; uCommand: Integer; dwData: integer): HWND; stdcall; external 'hhctrl.ocx' name 'HtmlHelpA'; // 3) В разделе Private у класса формы добавляешь: procedure WMHelp(var aMessage: TWMHelp); message WM_HELP; // 4) В разделе implementation пишешь: // Если смотрим помощь по пунктам меню function GetMenuHelpContext(Menu: TMenu; aMessage: TWMHelp): Integer; begin Result := 0; if (Menu <> nil) then begin Result := Menu.GetHelpContext(aMessage.HelpInfo.iCtrlId, true); if (Result = 0) then Result := Menu.GetHelpContext(aMessage.HelpInfo.hItemHandle, false); end; end; procedure TForm1.WMHelp(var aMessage: TWMHelp); // Предполагается, что класс // формы называется TForm1 var Control: TWinControl; ContextId: integer; hlp: HWND; begin if (aMessage.HelpInfo.iContextType = HELPINFO_WINDOW) then begin Control := FindControl(aMessage.HelpInfo.hItemHandle); // Ищем активный компонент while ((Control <> nil) and (Control.HelpContext = 0)) do Control := Control.Parent; if (Control = nil) then Exit; ContextId := Control.HelpContext; // Смотрим у него HelpContext end else begin ContextId := GetMenuHelpContext(Menu, aMessage); // Для меню if (ContextId = 0) then ContextId := GetMenuHelpContext(PopupMenu, aMessage); end; hlp := HtmlHelp(Handle, 'c:\WINDOWS\Help\joy.chm', HH_HELP_CONTEXT, ContextId); if (hlp = 0) then ShowMessage('Помощь не найдена!'); end; // 5) вместо 'c:\WINDOWS\Help\joy.chm' - подставляешь свой CHM - файл. Пример использования: F1 в запущенной программе Сообщение отредактировал yuansw - 28.09.2005 - 07:41 |
![]() |
|
![]() |
![]()
Сообщение
#2
|
|
![]() Черный человек ![]() Группа: Модераторы Пользователь №: 9425 Сообщений: 729 Регистрация: 20.01.2005 Из: Междуреченск Загружено: байт Скачано: байт Коэффициент: --- Спасибо сказали: 11 раз(а) ![]() |
Доступ к справочной информации
Для того чтобы во время работы программы пользователь, нажав клавишу , мог получить справочную информацию, надо чтобы свойство HelpFile главного окна приложения содержало имя файла справочной системы, а свойство HelpContext числовой идентификатор нужного раздела. Вспомните, идентификаторы разделов справочной системы перечислены в разделе [MAP] файла проекта справочной системы. Файл справочной системы приложения лучше поместить в ту папку, в которой находится файл исполняемой программы. Для каждого компонента формы, например поля ввода, можно задать свой раздел справки. Раздел справки, который появляется, если фокус находится на компоненте, и пользователь нажимает клавишу , определяется значением свойства Heipcontext этого компонента. Если значение свойства HelpContext элемента управления равно нулю, то при нажатии клавиши появляется тот раздел справки, который задан для формы приложения. Если в диалоговом окне есть кнопка Справка, то справочная информация выводится по-другому — для кнопки создается процедура обработки события onclick, которая обращением к функции winheip запускает программу Windows Help (файл Winhlp32.exe). При вызове функции winheip в качестве параметров указываются: идентификатор окна, которое запрашивает справочную информацию; имя файла справочной системы; константа, определяющая действие, которое должна выполнить программа Windows Help и уточняющий параметр. Примечание Идентификатор окна — это свойство Handle формы приложения. Свойство Handle доступно только во время работы программы, поэтому в списке свойств в окне Object Inspector его нет. Если необходимо вывести конкретный раздел справки, то в качестве параметра, определяющего действие, используется константа HELP_CONTEXT. Уточняющий параметр в этом случае задает раздел справки, который будет выведен на экран. Ниже, в качестве примера, приведена процедура обработки события Onclick для кнопки Справка (Button4) диалогового окна программы решения квадратного уравнения. Код // щелчок на кнопке Справка procedure TForm1.Button4Click(Sender: TObject); begin winhelp(Form1.Handle, 'sqroot.hip', HELP_CONTEXT, 1); end; HTML Help Workshop Современные программы выводят справочную информацию в Internet-стиле — окно, которое используется для вывода справки, напоминает окно Internet Explorer. И это не удивительно, так как для вывода справочной информации используются компоненты, составляющие основу Microsoft Internet Explorer. Система отображения справочной информации является частью операционной системы, поэтому никакие дополнительные средства для вывода справочной информации не нужны. Физически справочная информация находится в файлах с расширением chm. СНМ-файл — это так называемый компилированный HTML-документ. СНМ-файл получается путем компиляции (объединения) файлов, составляющих HTML-документ, который, как правило, состоит из нескольких HTML-файлов. Процесс преобразования HTML-документа в справочную систему называют компиляцией. Исходной информацией для компилятора справочной системы являются HTML-файлы, файлы иллюстраций и файл проекта. В результате компиляции получается СНМ-файл, содержащий всю справочную информацию. Наиболее просто создать справочную систему можно при помощи программы Microsoft HTML Help Workshop. Чтобы создать справочную систему, нужно: * подготовить файлы справочной информации; * создать файл проекта; * создать файл контекста (содержания); * выполнить компиляцию. Последние три из перечисленных выше шагов выполняются в программе HTML Help Workshop. Закрытие файла помощи При закрытии моего приложения окно помощи (если оно в это время открыто) автоматически не закрывается! Как мне сделать так, чтобы оно также закрывалось автоматически? Попробуйте так: Код Application.HelpCommand(HELP_QUIT, 0); Использование справки HTML Help Код unit uHtmlHelp;
interface uses Windows; function HtmlHelpA(hwndCaller: HWND; pszFile: PAnsiChar; uCommand: UInt; dwData: DWORD): HWND; stdcall; external 'hhctrl.ocx'; implementation end. unit SDIMAIN; // Main Window interface uses........., uHtmlHelp, .....; const HH_CLOSE_ALL = $0012; ...... ...... function TSDIAppForm.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean; begin HtmlHelpA(handle, PChar(m_HelpFile), 15, Data); CallHelp := true; end; procedure TSDIAppForm.FormClose(Sender: TObject; var Action: TCloseAction); begin ........... HtmlHelpA(handle, PChar(m_HelpFile), HH_CLOSE_ALL, 0); end; end. Сообщение отредактировал yuansw - 28.09.2005 - 07:40 |
![]() |
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 2.08.2025 - 05:43 |