Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.25;
Скачать: [xml.tar.bz2];

Вниз

Файл помощи *.chm   Найти похожие ветки 

 
zorik ©   (2005-07-05 10:25) [0]

Как подключить файл помощи вида *.chm к проэкту?
У меня Delphi6, WinXP


 
alex-drob   (2005-07-05 10:30) [1]

WinExec


 
zorik ©   (2005-07-05 10:45) [2]

Не проходит :-( И ShellExecute тоже не получается


 
alex-drob   (2005-07-05 10:52) [3]

shellexecute(handle,"open","....chm",nil,nil,sw_shownormal);

У меня работает.


 
Вася Пупкин ©   (2005-07-05 11:05) [4]


unit uHTMLHelp;

interface
uses Windows;
const
 HH_DISPLAY_TOPIC        = $0000;
 HH_HELP_FINDER          = $0000;  // WinHelp equivalent
 HH_DISPLAY_TOC          = $0001;
 HH_DISPLAY_INDEX        = $0002;
 HH_DISPLAY_SEARCH       = $0003;
 HH_SET_WIN_TYPE         = $0004;
 HH_GET_WIN_TYPE         = $0005;
 HH_GET_WIN_HANDLE       = $0006;
 HH_ENUM_INFO_TYPE       = $0007;  // Get Info type name, call repeatedly to enumerate, -1 at end
 HH_SET_INFO_TYPE        = $0008;  // Add Info type to filter.
 HH_SYNC                 = $0009;
 HH_RESERVED1            = $000A;
 HH_RESERVED2            = $000B;
 HH_RESERVED3            = $000C;
 HH_KEYWORD_LOOKUP       = $000D;
 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_TP_HELP_CONTEXTMENU  = $0010;  // text popup help, same as WinHelp HELP_CONTEXTMENU
 HH_TP_HELP_WM_HELP      = $0011;  // text popup help, same as WinHelp HELP_WM_HELP
 HH_CLOSE_ALL            = $0012;  // close all windows opened directly or indirectly by the caller
 HH_ALINK_LOOKUP         = $0013;  // ALink version of HH_KEYWORD_LOOKUP
 HH_GET_LAST_ERROR       = $0014;  // not currently implemented // See HHERROR.h
 HH_ENUM_CATEGORY        = $0015; // Get category name, call repeatedly to enumerate, -1 at end
 HH_ENUM_CATEGORY_IT     = $0016;  // Get category info type members, call repeatedly to enumerate, -1 at end
 HH_RESET_IT_FILTER      = $0017;  // Clear the info type filter of all info types.
 HH_SET_INCLUSIVE_FILTER = $0018;  // set inclusive filtering method for untyped topics to be included in display
 HH_SET_EXCLUSIVE_FILTER = $0019;  // set exclusive filtering method for untyped topics to be excluded from display
 HH_INITIALIZE           = $001C;  // Initializes the help system.
 HH_UNINITIALIZE         = $001D;  // Uninitializes the help system.
 HH_PRETRANSLATEMESSAGE  = $00FD;  // Pumps messages. (NULL, NULL, MSG*).
 HH_SET_GLOBAL_PROPERTY  = $00FC;  // Set a global property. (NULL, NULL, HH_GPROP)

type
   THtmlHelpA = function(hwndCaller: THandle; pszFile: PChar;
               uCommand: DWORD; dwData: DWORD): THandle; stdCall;

function HtmlHelp(hwndCaller: THandle; pszFile: PChar; uCommand: DWORD;
       dwData: DWORD): THandle;
var
   dwCookie:DWORD = 0;
   HtmlHelpA: THtmlHelpA;
   OCXHandle: THandle;
   HelpFileName:string;

implementation
function HtmlHelpInstalled: Boolean;
begin
   Result := (Assigned(HtmlHelpA));
end;
function HtmlHelp(hwndCaller: THandle; pszFile: PChar; uCommand: Cardinal;
 dwData: DWORD): THandle;
begin
 Result := 0;
 if (Assigned(HtmlHelpA)) then
 begin
   Result := HtmlHelpA(hwndCaller, pszFile, uCommand, dwData);
 end;
end;

initialization
begin
   HtmlHelpA := nil;
   OCXHandle := LoadLibrary("HHCtrl.OCX");
   if (OCXHandle <> 0) then
   begin
       HtmlHelpA := GetProcAddress(OCXHandle, "HtmlHelpA");
      HtmlHelpA( 0, "", HH_INITIALIZE, dwCookie) ; // Cookie returned by Hhctrl.ocx.
   end
end

finalization
begin
   if (OCXHandle <> 0) then
   begin
       HtmlHelpA(0,"", HH_CLOSE_ALL, 0) ;
       HtmlHelpA(0,"",HH_UNINITIALIZE,dwCookie) ;
       FreeLibrary(OCXHandle);
   end
end
end.



 
zorik ©   (2005-07-05 11:07) [5]

Получилось. Я вместо sw_shownormal писал 0


 
Вася Пупкин ©   (2005-07-05 11:10) [6]

Применение:

unit uMain;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs,Menus, AppEvnts, StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   MainMenu1: TMainMenu;
.......
   Help1: TMenuItem;
   About1: TMenuItem;
   Contents1: TMenuItem;
   Image1: TImage;
   procedure Contents1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
   procedure WMHelp(var aMessage: TWMHelp); message WM_HELP;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
implementation

uses uHTMLHelp;

{$R *.dfm}
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);
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;
       end
       else
       begin
           ContextId := GetMenuHelpContext(Menu, aMessage); // Для меню
           if (ContextId = 0) then
             ContextId := GetMenuHelpContext(PopupMenu, aMessage);
       end;
       hlp := HtmlHelp(Handle, pchar(HelpFileName), HH_HELP_CONTEXT, ContextId);
       if (hlp = 0) then
           ShowMessage("Помощь не найдена!");
end;

procedure TForm1.Contents1Click(Sender: TObject);
begin
   HtmlHelp(Handle, pchar(HelpFileName), HH_DISPLAY_TOPIC, 0);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   HelpFileName := "Test.chm";//Application.HelpFile;  
end;

end.



ps Один из множества возможных вариантов -)


 
zorik ©   (2005-07-05 11:24) [7]

>> Вася Пупкин
Спасибо. Получилось. Буду разбиратся. Я еще до такого уровня не дошел :-)


 
Eraser ©   (2005-07-05 12:07) [8]

zorik ©   (05.07.05 10:25)

http://www.ec-software.com/comppage.htm - советую.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.07.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.012 c
4-1117137483
cherrex
2005-05-26 23:58
2005.07.25
OCR для DELPHI


14-1120272038
Kerk
2005-07-02 06:40
2005.07.25
С днем рожденья! 2 июля


1-1120332898
Logan
2005-07-02 23:34
2005.07.25
Как записать положения CheckBoxа в inifile.


14-1120232633
GanibalLector
2005-07-01 19:43
2005.07.25
дайте ссылку на BDE.


8-1111882439
Valera
2005-03-27 04:13
2005.07.25
DSPack не обрабатывает сообщение на включение заставки и питания





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский