各位大虾好:
我想给我的delphi开发的软件写一个帮助文档,请问怎么写啊?我现在已经找到Microsoft Help Workshop这个软件,准备用这个软件写帮助,写好以后,delphi怎么调用它啊?请详细的给我解释一下,谢谢!
我想给我的delphi开发的软件写一个帮助文档,请问怎么写啊?我现在已经找到Microsoft Help Workshop这个软件,准备用这个软件写帮助,写好以后,delphi怎么调用它啊?请详细的给我解释一下,谢谢!
解决方案 »
- cxmemdata+dbedit的只读问题
- indy10 的 Idtcpserver 使用造成内存泄漏问题
- wprint是什么报表控件,哪位有能否发我一个[email protected]?
- DELPHI数据库连接池
- 如何定义跨FORM使用的变量?
- TQuery 和TTable的性能比较的问题
- 几个超级简单问题,没有资料,懒得找了!
- 有什么方法将文本文件中的数据一行一行,从头读到尾?
- 各位高手:你们好!我有个问题:有关多文档(MDI)如何打开和关闭
- 怎么把widestring转换为string类型
- 表中的内容已经改变,怎么还有debug提示信息
- delphi7 中QReport 面板在那里?谢谢
ShellExecute(Handle, 'open', PChar('d:\ks\delphitips.chm'),nil, nil, SW_SHOW);2
if FileExists(ExtractFilePath(Application.ExeName)+'Help.CHM') then
begin
winexec('HH.EXE Help.CHM',SW_NORMAL);
end楼主法的太多了。
ShellExecute(handle, 'open', 'help.chm', nil, nil, SW_SHOWNORMAL);
楼主的分太多了,接分!
现在hlp文件用的越来越少。打开一个CHM格式的文件代码如下:
procedure TMainForm.help1Click(Sender: TObject);
var fpath:string;
begin
fpath:=ExtractFilePath(ParamStr(0))+'help.chm';
ShellExecute(handle,nil,pchar(fpath),nil,nil,sw_shownormal);
end;
上面的代码中,首先获取当前执行文件(EXE文件)所在的路径,然后在此路径下寻找help.chm帮助文件并打开它,这就要求帮助文件和执行文件要放在同一目录下,如果你的帮助文件很多,有单独的子文件夹,那么对上述代码做一点修改即可。
建立工程
加入文件
建立内容文件
建立索引文件
编译Help工程
测试
在Delphi中使用 --------------------------------------------------------------------------------建立Help站点Help系统是一个超文本。HTML正是这样的一个东西。制作HTML帮助系统与做一个Web站点几乎完全相同。可能不一样的是:所有的链接都在内部,如同一个本地网站,当然直接http://...连出去一点也没有问题。所有在Web上的技术除了数据库端的CGI,ASP等等可能无法使用在Help里面。你只要写一大堆的*.HTML, Java和Java Script也肯定没有问题。但是我没有试。假设这个Help网站的首页是 Index.HTM。你应当把每一段文章(或一个Topic)写成一个HTML文件。以便以后一页页的调出。 建立工程在HTML Help Workshop中new一个工程,把Index.HTM加入到工程里。HTML Help Workshop会检索index所连接的文件,并把它们加入进来。加入文件你应该把所用到的所有文件都Add进工程。这样你在后面的步骤中就可以选择页面了。 建立内容文件点击HTML Help Workshop的Content页面,会提示生成一个内容文件(*.hhc)你主要在这里设定帮助的章节、标题。这里应该设计成一个树形结构,先建folder,再在Folder中加Page。重要的是Folder和Page名字要起好,因为它们最终会在帮助窗口的“目录”框中被显示出来。一步步地,加Folder,写名字,加Page,选择该Page连接的HTML文件.........好啦,内容加完了。 建立索引文件索引的建立方法类似Content。New 一个Key, 指明Key连接的文件。..... 编译Help工程好啦,编译!哗啦啦,一个Sample生成了。 在Delphi中使用CHM 到了关键的时候了 !由于目前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.OCXend; 进一个的使用,请参考 HTML Help API 和Sample