delphi如何调用chm文件,并指向指定的页面呀? ( 积分: 100 )

  • 主题发起人 主题发起人 hui717
  • 开始时间 开始时间
H

hui717

Unregistered / Unconfirmed
GUEST, unregistred user!
这样写代码,总是不对,或者根本就调不出来
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;

type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Edit1: TEdit;
Button1: TButton;
procedure BitBtn1Click(Sender: TObject);
function FormHelp(Command: Word; Data: Integer;
var CallHelp: Boolean): Boolean;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

function HtmlHelpA (hwndcaller:Longint; lpHelpFile:string; wCommand:Longint;dwData:string): HWND;stdcall; external 'hhctrl.ocx';

implementation

uses Unit2;

{$R *.dfm}
procedure ShowChmHelp(sTopic:string);
var i:integer;
begin
i:=HtmlHelpA(Application.Handle,Pchar(extractfilepath(application.ExeName)+'help.chm'),2,sTopic);
if i=0 then
begin
Showmessage('help.chm 帮助文件损坏!');
exit;
end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
OKBottomDlg.ShowModal();
end;

function TForm1.FormHelp(Command: Word; Data: Integer;
var CallHelp: Boolean): Boolean;
begin
case Data of
10100: ShowChmHelp('1.html');
10101: ShowChmHelp('2.html');
else ShowChmHelp('3.html');
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowChmHelp('4.html');
WinExec(PChar('help.chm::1.htm'),sw_normal);
end;

end.
 
只知道调.!

var TempStr : String;
Help_Str : Array[0..255] of Char;
TempStr :=Extractfilepath(application.ExeName)+'help.chm';
if(FileExists(TempStr))
then
ShellExecute(0,'open',StrPCopy(Help_Str, TempStr),nil, nil, SW_SHOW)
else
ShowMessage('帮助信息暂无');

关注怎么定位的问题..!!!
 
这样调我也会,关键是需要定位呀.
因为在不同的窗体,调出来应该显示不同的帮助内容嘛
 
给你一个过程
procedure OpenHelp(sKeyWord: String; hdl: THandle);
begin
with Link do
begin
cbStruct :=sizeof(HH_AKLINK) ;
fReserved :=FALSE ;
pszKeywords :=PChar(sKeyWord);
pszUrl :=nil;
pszMsgText :=nil;
pszMsgTitle :=nil;
pszWindow :=0;
fIndexOnFail :=TRUE ;
end;
HtmlHelp(hdl, Extractfilepath(paramstr(0))+'/help/帮助.chm', HH_KEYWORD_LOOKUP , DWORD_PTR(@link));
end;

sKeyWord和帮助文件里的标题名要一致
 
如何调也并指定页面问题,已经解决了。

现在是,如何让窗体或控件响应 F1 键呀
 
这个应该在 keypress 事件内加入的
 
一般来说,最简单的是,我们都会使用菜单,在菜单那里的shutcut属性里设为F1即可,不然就写KEY事件了~~
 
我是想实现,在窗体上任意控件获得焦点时,或是窗体自身获得焦点时,只要一按F1键,即可调出chm文件,并转到指定页面。

如何调出并转到指定页面我已做好了,关键是如何让F1键有反应呀

写 keypress 事件好像不行样
 
写在keydown
if key = vk_f1 then
 
多谢各位,问题已经解决了,一会儿我把解决方法贴上来
 
后退
顶部