delphi 的上下文相关帮助怎么实现?用CHM的帮助文件

aft_st_sd 2002-07-06 03:12:28
也就是点击标题栏上的帮助按钮,然后再在某一控件上点击,即可弹出说明
在VB中控件有一个WhatsThisHelpID属性,只能设置它有好了,可是DELPHI
中只有一个HelpContext属性,可是我设了它以后,按F1是可以的,用那个
帮助控钮却不行,我知道DELPHI 本身是不支持CHM格式帮助文件的,有
什么办法吗?
...全文
67 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aft_st_sd 2002-07-06
  • 打赏
  • 举报
回复
呜!!呜!!!
aft_st_sd 2002-07-06
  • 打赏
  • 举报
回复
crack007(也许不是) 老兄十分感谢你的关注
可能你还没怎么听明白我的意思(也许是我描述
的不太清楚)我说的是上下文帮助而不是帮助上
下文,你说的这些我已经实现了。
我的意思是当标题栏上有帮助按钮的时候,你点
击帮助按钮,然后再在窗体点击你要帮助的地方,
出来一个类似于HINT的东西,这个在VB中实现是
非常容易的,可是在DELPHI中 :( 我不会
aft_st_sd 2002-07-06
  • 打赏
  • 举报
回复
ht99(范海涛) 兄有发吗?
crack007 2002-07-06
  • 打赏
  • 举报
回复
他人之玉,借花献佛。

到了关键的时候了 !由于目前HTML Help只有VC的头文件和库。要在Delphi中使用只能自己来啦。

下面是我研究HTML Help的过程。

经过分析,发现 HTML Help的使用的核心是HHCtrl.Ocx。OCX使用在Delphi中简直是

太方便了。于是我就从Delphi中Install ActiveX。妄想把HHCtrl.OCX直接放到 Tool Panel

上,结果HHCtrl.Ocx死活不能显示在Delphi的列表中,真是个顽固分子!

后来我决定直接使用它。于是我把HHCtrl.Ocx当作普通的DLL加载。挑出了核心的HtmlHelpA

函数(我没有处理双字节的函数所以HtmlHelpW我就管了)。

接着我花了一个小时把HTMLHelp.H 翻译到了PAS。并增加了几个函数和变量以处理DLL的加载和卸载。

于是只要有一个HTMLHelp_Decl.PAS 就可以搞定了。



言归正传,现在说说本例中Delphi如何使用这个文件。

HTML Help的核心使用函数是 HtmlHelpA,声明如下:

function HtmlHelpA hwndCaller:HWND; pszFile:PChar ; uCommand:UINT; dwData:DWORD_PTR ):HWND;stdcall;

所有到特定页面的引用都通过pszFile传递,uCommand表示某种操作。关于字符串传递的命名规则

和Command的说明,请参考HTML Help workshop的联机帮助的API 章节。



我做的工作如下:

封装了HHCtrl.OCX的调入,卸载,和HtmlHelpA。

加入了两个函数:

function HtmlHelp( hwndCaller:HWND; strFile:String; uCommand:UINT; dwData:DWORD_PTR ):HWND;

procedure CloseHtmlHelpSystem;

所有的操作都通过这两个函数搞定 !





HTMLHelp_Decl.Pas 使用方法:

uses HTML Help_Decl.PAS;



....

procedure TForm1.Button1Click(Sender: TObject);

begin

// 显示一个页面,函数内部自动加载 HHCtrl.OCX,并初始化

HtmlHelp( handle, AppPath+'\Sample.chm::/HelpContent\index.htm',

HH_DISPLAY_TOPIC, nil);

end;

....

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);

begin

HtmlHelp( 0, '', HH_CLOSE_ALL, nil ); // 关闭你打开的所有帮助

CloseHtmlHelpSystem; // 卸载HHCtrl.OCX

end;
aft_st_sd 2002-07-06
  • 打赏
  • 举报
回复
对了,有没有帮助工程文件的完整程序
aft_st_sd 2002-07-06
  • 打赏
  • 举报
回复
多谢
zhcl2000@163.net
ht99 2002-07-06
  • 打赏
  • 举报
回复
给我你的mail,我给你发个完整的程序 ht99@cx66.com

5,930

社区成员

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

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