---250---分,还可以加!关于CHM帮助的问题!详情见内!!---250分---

Tod 2001-07-10 05:21:06
我想在delphi里调用chm帮助文件,当然不是简单的shellexcute的打开方式,我想实现像dephi那样根据当前光标的定位或者焦点(对象)位置按F1键自动打开chm文件并显示与当前帮助对象相关的帮助主题。我不知如何实现,望各位大侠相助,请附详细的例子和详细说明(比如各种参数的意义及使用方法),万分感谢!!
我用的chm制作工具是html help workshop 3.51英文版本。
我的mail是:lovelinf@china.com
...全文
229 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
helpmeplease 2001-07-12
  • 打赏
  • 举报
回复
helpmeplease 2001-07-12
  • 打赏
  • 举报
回复
helpmeplease 2001-07-12
  • 打赏
  • 举报
回复
Tod 2001-07-12
  • 打赏
  • 举报
回复
to TechnoFantasy(www.applevb.com):谢谢你,我后来没有用您说的那个办法,但是您提供的思路很好,我用的办法是,
直接在主窗体的OnHelp中写入代码调用相应的部分,结果没有问题!

还有一个额外的问题问问,我用的那个WHD HTML3.51英文版对中文支持不好,在生成的chm帮助文件中左侧的目录中不
能显示中文,是一堆乱码(右边的显示页面没有问题),谁有什么办法解决?加高分,非常感谢!
TechnoFantasy 2001-07-12
  • 打赏
  • 举报
回复
可能没有什么好的办法,你可以到google.com上找一下是否有中文支持的版本。我使用的
是微软的html workshop.这个可以支持中文
Tod 2001-07-12
  • 打赏
  • 举报
回复
我把分给了,谢谢大家!
月光 2001-07-11
  • 打赏
  • 举报
回复
生成chm时不是可以设置索引吗?估计是不是跟那个有关?查找与当前帮助对象类似的索引.
aft_st_sd 2001-07-11
  • 打赏
  • 举报
回复
TechnoFantasy(www.applevb.com) 能不能把按F1 的这一段写详细一点,我刚刚开始接触Delphi.
Tod 2001-07-11
  • 打赏
  • 举报
回复
高分都没人愿意拿吗?
TechnoFantasy 2001-07-11
  • 打赏
  • 举报
回复
应该不会出现这样的错误,除非你的帮助文件损坏或者你设定了Form的HelpFile属性,不要设定该属性,直接在AppHelp子程序中根据Data指定的ID来调用CHM文件的相应部分,调用的方法就是上面的。另外如果可以希望能看看你的代码,这样更好分析。
wljcr 2001-07-11
  • 打赏
  • 举报
回复
gz
tjf1117 2001-07-11
  • 打赏
  • 举报
回复
靠,虽然我不会,但是你也太笨了,绝对很简单,给我2天功夫,我绝对搞定,现在没有时间给你瞎搞。
大家赶紧加紧,我也看看怎么做,
enlightenment 2001-07-11
  • 打赏
  • 举报
回复
gz
Tod 2001-07-11
  • 打赏
  • 举报
回复
哪位大侠补充啊??不会又没人吧?
Tod 2001-07-11
  • 打赏
  • 举报
回复
TechnoFantasy(www.applevb.com):我试了你的方法,老是报错,说不是windows帮助文件或该文件已经损坏。不行啊!
Tod 2001-07-11
  • 打赏
  • 举报
回复
再提前一次
TechnoFantasy 2001-07-10
  • 打赏
  • 举报
回复
Delphi不支持chm文件作为帮助文件,不过有变通的方法,在程序界面上按F1键,会
引发Appication的OnHelp事件,在程序启动时设定事件处理函数就可以了:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
private
function AppHelp(Command: Word; Data: Longint; var CallHelp: Boolean): Boolean;
{ Private declarations }
public
{ Public declarations }
end;



var
Form1: TForm1;

implementation

{$R *.DFM}

function TForm1.AppHelp(Command: Word; Data: Longint; var CallHelp: Boolean): Boolean;
begin
ShowMessage(IntToStr(Data));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnHelp:=AppHelp;
Button1.HelpContext := 1;
Button2.HelpContext := 2;
end;

end.

上面的代码在程序启动时将OnHelp设定为AppHelp,并设定Button1以及Button2的
HelpContext。然后在控件具有焦点时按F1键就可以弹出MessageBox显示HelpContxt
结合前面的代码就可以显示相应的帮助了.
jianping0 2001-07-10
  • 打赏
  • 举报
回复
gz
luhongjun 2001-07-10
  • 打赏
  • 举报
回复
bcb大虾的方法:

typedef
HWND WINAPI T_HtmlHelpA( HWND hwndCaller,
LPCSTR pszFile,
UINT uCommand,
DWORD_PTR dwData);
HMODULE hLoadLib=LoadLibrary("HHctrl.ocx");
if (hLoadLib==NULL)
{
ShowMessage("系统不支持HTMLHELP帮助。");
return;
}
T_HtmlHelpA *HtmlHelpA=
(T_HtmlHelpA *)GetProcAddress((HINSTANCE)hLoadLib,"HtmlHelpA");
HtmlHelpA(Handle,"oicq.chm",HH_DISPLAY_TOPIC,NULL);

设置Form的HelpContext或HelpFile属性。 就可以响应F1键
Tod 2001-07-10
  • 打赏
  • 举报
回复
to TechnoFantasy(www.applevb.com):如何在每个对象上响应F1键?
to sundayboys(sunboy):我对C不熟悉,你能说delphi的吗?
加载更多回复(2)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧