Delphi应用程序与Chm帮助关联的简单实现(源代码)
请参考:Delphi程序与Chm帮助关联的简单实现
http://www.csdn.net/Develop/Article/18/18116.shtm
unit Unit1;
/// 作者:李新 kelvinsdu@sina.com QQ:1348513
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;
const
conHelpTitle='科研项目管理系统 2.0';
HH_DISPLAY_TOPIC=0;//先查msdn,有好多command,自己改成0,1之类的
type
TForm1 = class(TForm)
EdtProjectManager: TEdit; // helpcontext =10101
Button1: TButton;
Label1: TLabel;
EdtFinanceInput: TEdit; // helpcontext =10102
function FormHelp(Command: Word; Data: Integer;
var CallHelp: Boolean): Boolean;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure ShowChmHelp(sTopic:string);
var
Form1: TForm1;
function HtmlHelpA (hwndcaller:Longint; lpHelpFile:string; wCommand:Longint;dwData:string): HWND;stdcall; external 'hhctrl.ocx'
implementation
uses Unit2;
{$R *.DFM}
Function CurrentExeFilepath:String; //返回当前的路径
var cdir:string;
Begin
Result:='';
SetLength(CDir,144);
If GetCurrentDirectory(144,PChar(CDir))<>0 Then
SetLength(CDir,StrLen(PChar(CDir)))
Else
RaiseLastWin32Error;
Result:=CDir;
End;
procedure ShowChmHelp(sTopic:string);
var i:integer;
begin
i:=HtmlHelpA(Application.Handle,Pchar(CurrentExeFilepath+'\help.chm'),HH_DISPLAY_TOPIC,sTopic);
if i=0 then
begin
Showmessage(' help.chm 帮助文件损坏!');
exit;
end;
end;
function TForm1.FormHelp(Command: Word; Data: Integer;
var CallHelp: Boolean): Boolean;
begin
case Data of
10100: ShowChmHelp('SystermIntroduction.htm');
10101: ShowChmHelp('ProjectManager.htm');
10102: ShowChmHelp('FinanceInput.htm');
else ShowChmHelp('SystermIntroduction.htm');
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
OKBottomDlg:=TOKBottomDlg.create(nil);
try
OKBottomDlg.ShowModal;
finally
OKBottomDlg.free;
end;
end;
end.
/////////////////////////
unit Unit2;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls;
type
TOKBottomDlg = class(TForm)
OKBtn: TButton;
CancelBtn: TButton;
cbQuickQuery: TComboBox; // helpcontext =10200
EdtSuperQuery: TEdit; // helpcontext =10201
function FormHelp(Command: Word; Data: Integer;
var CallHelp: Boolean): Boolean;
private
{ Private declarations }
public
{ Public declarations }
end;
var
OKBottomDlg: TOKBottomDlg;
implementation
uses unit1;
{$R *.DFM}
function TOKBottomDlg.FormHelp(Command: Word; Data: Integer;
var CallHelp: Boolean): Boolean;
begin
case Data of
10200: ShowChmHelp('QuickQuery.htm');
10201: ShowChmHelp('SuperQuery.htm');
else ShowChmHelp('SystermIntroduction.htm');
end;
end;
en