Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.25;
Скачать: CL | DM;

Вниз

Файл помощи *.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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
1-1120555327
Ded Moroz
2005-07-05 13:22
2005.07.25
WinXP Manifest


1-1120728765
pasha_golub
2005-07-07 13:32
2005.07.25
Создание копии объекта


1-1120646620
Demidoff
2005-07-06 14:43
2005.07.25
Есть ли в Delphi компонент по работе с архивами?


1-1120677761
vova3085
2005-07-06 23:22
2005.07.25
поиск в ListBox


4-1117361598
Demonix
2005-05-29 14:13
2005.07.25
Delphi, создание пользователя в Active Directory