Delphi程序与Chm帮助关联的简单实现

原创 2003年04月25日 16:25:00

Delphi程序与Chm帮助关联的简单实现

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

 作者:李新  kelvinsdu@sina.com  QQ1348513

 

Chm格式的帮助是从windows98以后才出现的新的格式,与.hlp格式相比,具有更简单的编辑方式、更丰富的画面。它是通过Chm制作工具对网页文件进行编译得到的,所以理论上你可以把帮助文件做的和网页一样漂亮。

 

最简单的制作方法:先用FronPage制作帮助文件,然后用HTML Help Workshop编译就可以得到*.chm的帮助文件了。HTML Help Workshop可以到微软的网站上去下载。

 

应用程序中的帮助可分为上下文关联和非关联两种。上下文关联,是指用户按F1键后,出现与当前焦点对象(如窗体、文本框、下拉列表框)相关的帮助画面;不同对象,出现的帮助不同。非关联帮助,是指在程序任何位置按F1键后,出现同一帮助画面。下面就这两种方式,谈谈在Delphi中的简单实现方法。

 

一、非关联的chm帮助

Delphi中,你可以通过ShellExecute函数直接调用chm帮助文件,具体如下:

uses shellapi
.......

var  HWndHelp:Hwnd;

     i:integer;

begin

   //检查帮助窗口是否已经存在

   HWndHelp:=FindWindow(nil,conHelpTitle);

   if HwndHelp<>0 then  // 如存在则关闭

        SendMessage(HwndHelp,WM_CLOSE,0,0);

   i:=ShellExecute(handle, 'open',Pchar(strCurExePath+'/help.chm''),nil, nil, sw_ShowNormal);

   if i<>42 then

      Showmessage(' help.chm 帮助文件损坏!');

end;

 

二、上下文关联的chm帮助

   Delphi中实现上下文关联的chm帮助,可以调用Windows系统目录System32下的HHCTRL.OCX控件中的HtmlHelpA函数实现。 需要以下几个步骤:

 

1 设置相关控件的HelpContext属性。

  例,主窗体frmMain:10100 ,其中的文本框 edtInput10101

对话框dlgReport10200 ,其中的组合列表框 cbReportEdit10201

 

2 声明HtmlHelpA函数

 

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

 

3  F1按键响应

 

//公用函数ShowChmHelp显示不同帮助画面。

procedure ShowChmHelp(sTopic:string);

var i:integer;

begin

  i:=HtmlHelpA(Application.Handle,Pchar(ExePath+'/help.chm’),HH_DISPLAY_TOPIC,sTopic);

  if i=0 then

  begin

      Showmessage(' help.chm 帮助文件损坏!');

      exit;

  end;

end;

….

function TfrmMain.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;

begin

   case Data of

     10100: ShowChmHelp(frmMain.htm);

     10101: ShowChmHelp('edtInput.htm');

     else  ShowChmHelp(default.htm');

   end;

end;

function TdlgReport.FormHelp(Command: Word; Data: Integer; var CallHelp: Boolean): Boolean;

begin

   case Data of

     10200: ShowChmHelp('dlgReport.htm');

10201: ShowChmHelp(cbReportEdit.htm');

     else  ShowChmHelp(default.htm');

   end;

end;

这样,通过不同窗体的FormHelp事件,就可以实现帮助的关联。

 

以上介绍了delphi应用程序与chm帮助关联的一种简单实现方法。如果要实现更复杂的关联(例如,与帮助页面内特定位置/书签的关联,请查看HtmlHelpA函数的说明。
版权声明:本文为博主原创文章,未经博主允许不得转载。

Delphi7动态调用chm帮助文件,并使之打开指定的页面

         Chm格式的帮助是从windows98以后才出现的新的格式,与.hlp格式相比,具有更简单的编辑方式、更丰富的画面。它是通过Chm制作工具对网页文件进行编译得到的,所以理论上你可以把...
  • hui717
  • hui717
  • 2007年10月13日 15:03
  • 2545

Delphi应用程序与Chm帮助关联的简单实现(源代码)

Delphi应用程序与Chm帮助关联的简单实现(源代码)请参考:Delphi程序与Chm帮助关联的简单实现http://www.csdn.net/Develop/Article/18/18116.sh...
  • kelvinsdu
  • kelvinsdu
  • 2003年06月09日 07:44
  • 790

WPF 为应用程序添加帮助文档

 System.Windows.Forms.Help.ShowHelp(null, "*.chm"); WPF暂时没有帮助类,需要引入System.Windows.Forms dll  参考:http...
  • iamoyjj
  • iamoyjj
  • 2009年04月09日 09:25
  • 4723

好书推荐下载,DELPHI程序员必备手册2部(CHM格式),N部其他格式的delphi书籍,外加100部经典书籍下载(转载)

[更名魔法师]3.0http://www.onlinedown.net/soft/26845.htm绿色软件,无需安装,集多种改名软件功能于一身,是大批量整理MP3,图象等文件不可多得的工具。批量读取...
  • foreveryday007
  • foreveryday007
  • 2004年07月01日 15:06
  • 14727

HTML Help Workshop制作chm帮助文件和在应用程序中的调用

最近在使用微软公司提供的HTML   Help   Workshop工具包 制作chm帮助文件, 现在总结如下:   一、制作前的HTML文件准备工作     由于chm帮助文件是基于HTML文件特征...
  • taomanman
  • taomanman
  • 2011年06月26日 11:00
  • 1574

Android 帮助文档 和 书籍推荐

Android帮助文档的目录在:D:\android_sdk\docs; 打开index.html就可以看到了,但是这样打开文档,搜索等,非常慢; 解决方法网上比较多,这里推荐一个比较简单的; 下...
  • chinabinlang
  • chinabinlang
  • 2015年11月24日 15:55
  • 724

问题解决“WIN7系统 .CHM文件打开后显示html帮助执行程序停止工作”

今天遇到个问题,在看java的API帮助文档的时候,需要打开chm文件,下了个chm viewer,不能用,弃了 找其他打开软件又嫌费事,故而转window 自带的CHM阅读程序,编译的HTML帮助...
  • akenseren
  • akenseren
  • 2017年03月26日 15:04
  • 686

帮助文档(*.chm)制作 以及在winform程序中的应用

一、帮助文档制作 软件:Html help
  • shmily0923
  • shmily0923
  • 2014年08月27日 10:32
  • 1705

Delphi 使用CHM文件制作系统帮助文档(上下文感知帮助的制作)

一、基础知识简介         使用帮助提示窗口或状态栏只能提供简单、单一的帮助,无法对某一模块或应用程序整体提供系统的 帮助,因此运行Windows应用程序,需要帮助时一般都可以通过执行帮助...
  • xiongmao000738
  • xiongmao000738
  • 2011年10月08日 19:33
  • 2473

如何通过C#调用CHM帮助文件

通过.Net Framework提供的Help类来完成CHM帮助文件的调用,Namespace: System.Windows.Forms。 若要为应用程序提供帮助,调用Help类 ShowHelp ...
  • hiyavip
  • hiyavip
  • 2006年04月20日 10:56
  • 1312
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi程序与Chm帮助关联的简单实现
举报原因:
原因补充:

(最多只允许输入30个字)