我用Delphi做了一个软件,现在想在这个软件主界面的帮助菜单里做一个联机的帮助系统,不知道怎么做?我已经在Word里写好了rtf格式的一个文档,然后试着用Microsoft Help Workshop这个软件进行编译,但是提示说我这个rtf格式的文档太大,无法打开,下一步不知道怎么解决?小弟先谢了.

解决方案 »

  1.   

    在Delphi中如何实现联机帮助? 
     
    解放军61938部队 徐田荣 在Windows中各种应用程序使用期间,我们可以通过按下F1键快速进入相关主题的帮助信息,从而获取帮助。在用户自己编写的Delphi应用程序里,对于chm格式的帮助文件,我们也可以编写自己的联机帮助。此功能主要是通过引用HHctrl.ocx文件的函数HtmlHelpA实现。在阅读下面文字之前,请先确保自己会用MicroSoft的帮助文件制作工具HelpWorkshop制作chm格式帮助,如果不会,请参阅网上王寒晖写的文章《跟我学做chm帮助文件》。以下是用Delphi实现联机帮助的过程:1. 列出程序里需要用到的联机帮助主题,并分配主题号,以及对该主题进行解释的html文件;如:控件Button1的帮助主题是ID_Button1_Help,主题号是10,帮助文件是sample1.htm。对于需要联机帮助的所有控件或文字,按照Button1的方式依次列出帮助主题、主题号和帮助文件。2. 在chm帮助文件所在目录下新建两个文件,Library.h和Library.txt;打开Library.h进行编辑,按如下模式输入步骤1中列出的帮助主题,每行写一个帮助主题。如:#DEFINE ID_Button1_Help 10#DEFINE ID_Button2_Help 11;打开Library.txt进行编辑,按如下模式输入步骤1中列出的帮助主题弹出文字。如:.topic ID_Button1_Help这是Button1的联机帮助!.topic ID_Button2_Help这是Button2的联机帮助!3. 打开chm帮助文件的工程文件,进入Project(工程)页面,用鼠标左键单击左侧由上至下第四个按钮HtmlHelp API information(Html帮助API信息)。1) 在弹出的HtmlHelp API information窗口中选择Alias(别名)页面,用鼠标左键单击右侧由上至下第一个按钮Add…(添加…),在弹出的Alias对话框中第一个编辑框内输入ID_Button1_Help,第二个下拉列表框内选择sample.htm,点击OK按钮插入该Alias(别名),重复此过程直至步骤1中所有的主题均在此处列出,如下图所示。2) 在HtmlHelp API information窗口中选择Map(映射)页面,用鼠标左键单击右侧由上至下第一个按钮Header File…(头文件…),在弹出的Include File(包含文件)对话框中,单击Browse…(浏览…)按钮,在弹出的打开…对话框中找到Library.h文件,单击打开返回Include File(包含文件)对话框,单击OK按钮返回Map(映射)页面,如下图所示。3) 在HtmlHelp API information窗口中选择Text Pop-ups(弹出文字)页面,用鼠标左键单击右侧由上至下第一个按钮Header File…(头文件…),在弹出的Include File(包含文件)对话框中按步骤2)中方式指定Library.h文件;用鼠标左键单击右侧由上至下第二个按钮Text File…(文本文件…),在弹出的Include File(包含文件)对话框中按步骤2)中方式指定Library.txt文件,单击OK按钮返回Text Pop-ups(弹出文字)页面,如下图所示。4. 在HtmlHelp API information(Html帮助API信息),点击确定按钮返回Project(工程)页面,选择File->Compile重新编译该帮助文件。到现在为止,我们已经准备好了一个可以实现联机帮助的chm文件了,下面我们就可以编写delphi程序实现联机帮助功能了,过程如下。1. 新建一个工程Project1,新建Unit,将该Unit保存为HtmlHelp_Declaration,打开HtmlHelp_Declaration,在此声明HtmlHelp函数及相关常量、类型。该文件内容如下所示:unit HTMLHELP_Declaration;interfaceusesWindows;constHH_HELP_CONTEXT = $0F;HH_CLOSE_ALL = $12;HH_INITIALIZE = $1C;HH_UNINITIALIZE = $1D;typeDWORD_PTR = ^DWORD;function HtmlHelp( hwndCaller:HWND; strFile:String; uCommand:UINT; dwData:DWORD_PTR ):HWND; //实现启动联机帮助的函数procedure CloseHtmlHelpSystem; //实现关闭帮助窗口的过程
    implementationusesSysUtils;constHHControlInstance:THandle=0;dwCookie :DWORD = 0;varHtmlHelpA:function ( hwndCaller:HWND; pszFile:PChar ; uCommand:UINT;dwData:DWORD_PTR ):HWND;stdcall; //引用HHCTRL.OCX中的启动帮助函数
    (* 函数实现 *)function HtmlHelp( hwndCaller:HWND; strFile:String; uCommand:UINT; dwData:DWORD_PTR ):HWND;(*函数的实现过程:如果是第一次启动联机帮助,则载入库HHCTRL.OCX,并将启动帮助函数的地址赋给HtmlHelpA,然后通过传递参数HH_INITIALIZE调用之来初始化联机帮助,最后通过调用该函数并传递适当的参数来实现联机帮助;如果不是第一次启动联机帮助,则直接调用该函数并传递适当的参数即可。*)varOcxFileName:String;p:PChar;beginif HHControlInstance=0 thenbeginOcxFileName := StringOfChar( ' ', 256);p := PChar( OcxFilename );GetSystemDirectory(p,255);StrCat(p,'\HHCTRL.OCX');HHControlInstance := LoadLibrary( P );if HHControlInstance = 0 thenraise exception.Create('HHCtrl.OCX not installed!'#13' HTMLHELP cannot displayed!');@HtmlHelpA := GetProcAddress( HHControlInstance, 'HtmlHelpA');if @HtmlHelpA = nil thenraise exception.Create('Function HTMLHELP cannot loaded!');HtmlHelpA( 0, nil, HH_INITIALIZE, (@dwCookie));end;result := HtmlHelpA( hwndCaller, PChar( strFile ), uCommand, dwData );end;
    procedure CloseHtmlHelpSystem;(*函数的实现过程:调用HtmlHelpA函数并传递参数HH_UNINITIALIZE来反初始化联机帮助,并释放前面载入的库HHCTRL.OCX。*)beginif HHControlInstance<>0 thenbeginHtmlHelpA( 0, nil, HH_UNINITIALIZE, DWORD_PTR(dwCookie));FreeLibrary(HHControlInstance);end;end;end.2. 在Unit1保留字implementation后面添加上对HtmlHelp_Declaration的引用声明,如下所示:usesHTMLHELP_Declaration;3. 修改Unit1窗体的HelpFile属性为上面重新编译过的chm文件,要写明路径及文件名,如帮助文件与工程文件在同一路径下,只需指定文件名即可。4. 在Unit1窗体的事件onclose函数中添加如下代码:HtmlHelp( 0,'',HH_CLOSE_ALL,nil);CloseHtmlHelpSystem;5. 在Unit1窗体的事件onhelp函数中添加如下代码:Htmlhelp(Handle, HelpFile, HH_HELP_CONTEXT,DWORD_PTR(ActiveControl.HelpContext));CallHelp := False;6. 在Unit1窗体中添加一个Button控件,设置该控件的HelpContext属性值为10。编译运行Project1,在显示的窗口中利用Tab键使当前焦点为Button1,此时按下F1键,对Button1的联机帮助是不是出现了?对了,制作联机帮助就是这么简单!以上程序在WinXP + Delphi5上调试通过,本人有上述程序的完整源码,有兴趣的同志可以email我([email protected])索取。
      

  2.   

    跟我学做chm帮助文件 从Windows 3.X到Windows 95,Windows使用的帮助文件一直都是hlp格式。在Windows 98以后,增加了一种基于HTML文件特征的chm帮助文件,Windows 98称之为Compiled HTML Help File。chm帮助文件是一个统一的窗口,左侧是目录、索引和搜索这三个功能项,通过常见的标签栏进行切换;右侧是Html文件的显示部分,改变了原来帮助文件目录窗口和主题窗口分离的情况;上部是工具栏。你可以用chm文件来制作软件说明书、产品介绍说明、学习教程、电子图书、个人资料管理等等。下面本文就以微软公司提供的HTML Help Workshop工具包,为你介绍如何制作chm帮助文件。
    下载与安装
      微软公司提供了制作chm帮助文件的HTML Help Workshop工具包,下载地址http:∥msdn.microsoft.com/library/tools/htmlhelp/wkshp/htmlhelp.EXE,目前的最新版为1.31英文版,文件大小3.34MB。直接运行下载后是一个自解压文件,按照提示即可完成安装。安装完成后,运行“开始/程序/HTML Help Workshop/HTML Help Workshop”后进入HTML Help Workshop主界面(图1)。
    如何使用
      用HTML Help Workshop制作chm文件很方便,下面就以“中华搜索宝CHINASSB”的软件说明为例,介绍制作的具体步骤。
      
    一、制作前的准备工作
      由于chm帮助文件是基于HTML文件特征的,所以前期编写HTML文件的准备工作很重要。HTML Help Workshop的角色就像是一个总管,以一个项目控制整个项目的各类型文件,然后将各类型的文件编译成独立的chm文件。它的每个主题就是一个HTML文件,它的结构有点类似平常我们所见到的目录树,但是它的主题包括目录及文件。主题文件可以用任何一个HTML编辑器进行编辑,也可用HTML Help Workshop编辑,唯一美中不足的是它的编辑器是纯文字模式,对于HTML文件而言不具备所见即所得的效果。
      如果你不会制作网页,没关系,你也可以通过Word 97或Word 2000,将Word格式的主题文件转换成HTML格式。
      
    二、创建项目文件
    第一步:点击HTML Help Workshop菜单栏中的“File/New”命令,这时出现“选择新建内容”的对话框,选中“Project”。
    第二步:,按“OK”按钮后,将“Convert WinHelp Project”这个选项留空,继续下一步。
    第三步:点击“Browse”按钮,设置放置项目文件的目录及项目文件名(图2),完成后,继续下一步。
    第四步:因为我们已经事先建好了html文件,此时请选择“HTML file”(图3),继续下一步。
    第五步:点一下“Add”按钮并加入已经编辑好的主题文件(也就是设置成首页面的HTML文件),如图4。点击“下一步”,最后点击“完成”按钮,新的项目即已新增完成。
      现在就可以进入HTML Help Workshop工作窗口(图5)。在窗口的上方是3个卷标,分别是“Project(项目)”、“Contents(目录)”、“Index(索引)”。
      在“Project”卷标的左侧是7个按钮,它们的功能名称自上而下分别是:“Change project options(改变项目选项)”、“Add/Remove topic files(添加/删除主题文件)”、“Add/Modify window definitions(添加/修改窗口定义)”、“HtmlHelp API information(HTML帮助API信息)”、“View HTML source(校验HTML源文件)”、“Save Project Contents and Index files(保存项目、目录和索引文件)”、“Save all file and Compile(保存全部文件并编译)”。
    第六步:点击“Project”编辑窗口下方的“Change Project Options”按钮后,会弹出一个“Options”对话框(图6)。在这个对话框的“General”卷标的“Title”中输入标题“中华搜索宝CHINASSB”,编译后这个标题将出现在chm文件窗口的标题栏中。在“File”卷标中选上“Automatically create contents file(.hhc) when compiling”。
      chm文件的“Search(搜索)”选项允许用户在所有主题文件中搜索字、词或短语,将它们的标题显示出来,而且用醒目的方式显示在主题中。在“Compiler”卷标中选上“Compiler full-text search information”,即可支持全文检索功能。
    第七步:点击“Save project file and compile”按钮,虽然此时已经可以观看结果了,不过,我们要再多作一项设定让最后的成品再完整些。
      
    三、创建目录文件
      编辑目录文件是制作chm文件最关键的工作。目录文件应该包含一个chm文件所有目录(主题),而每个目录又包含条目标题(名称)和该条目的主题文件,要避免条目标题与对应的主题不一致的情况出现。等所有目录都添加好后目录就算完成了。
    第一步:点击HTML Help Workshop工作窗口的“Contents”卷标,这时系统弹出一个对话框,提示你“项目”还没有关联目录文件(.hhc),选择“Create a new contents file”,点击“OK”按钮后将创建一个新的目录文件。
    第二步:请指定一个新目录文件名和存放路径,点击“保存”后出现目录编辑窗口,目录编辑窗口的左侧有11个按钮。
    第三步:根据需要插入标题(类似资源管理器中的目录)或页面(类似资源管理器中某目录下的文件),按下“Insert a heading(插入标题)”或“Insert a page(插入页面)”按钮,都会弹出“Table of Contents Entry”对话框(图7),在“Entry title”输入框中输入条目的标题,并根据情况选定对应的主题文件,单击“Entry title”下的“Add”按钮,在弹出的对话框下面的“File or URL”输入框中输入文件名或URL地址并确定。
    第四步:如果在单击“Insert a page”按钮之前所选择的条目不包含别的条目,也不被别的条目所包含,那么会询问“Do you want to insert this entry at the beginningof the table of contents?”,选择了“是”会增加起始条目(一级条目),选择了“否”会增加一个子条目。
      标题可以分为多级,要按照制作的内容统一考虑。如果觉得不满意,可以用左侧的箭头进行调整,也可以选定该条目,单击鼠标右键,不但可以调整,还可以插入标题、主题或目录文件。
      
    四、创建索引文件
      索引文件(hhk)也是一个HTML文件,它包含若干个关键词,当用户打开chm文件后,单击索引标签并输入一个关键词后,chm文件将显示与这个关键词有关的主题的列表,使大家非常方便地找到相关主题。
    第一步:点击HTML Help Workshop工作窗口的“Index”卷标,这时系统弹出一个对话框,提示你“项目”还没有关联索引文件(.hhk),选择“Create a new contents file”,点击“OK”按钮后将创建一个新的索引文件。
    第二步:请指定一个新索引文件名和存放路径,点击“保存”后出现索引编辑窗口,索引编辑窗口的左侧有11个按钮。
    第三步:单击“Insert a keyWord”按钮,出现“Index Entry”对话框,在“General”选项的“KeyWord”输入框中输入关键词,再单击“Add”按钮添加与该关键词相关联的主题文件。如果想跳转到另一个关键词,在“Index Entry”对话框中按“Advance”选项,选中“Target is Another KeyWord”,再单击“General”选项的“KeyWord”输入框中输入关键词,再单击“Add”按钮添加与要跳转的关键词相关联的主题文件,单击“OK”按钮。最后单击“确定”按钮,并按“Save file”进行存盘。
      
    五、最后的设置工作
    第一步:选择“Project”卷标,点击“Change Project Options”按钮,在“File”卷标的“Content file”项目中,点击“Browse”指定为toc.hhc。在“Index file”项目中,点击“Browse”指定为index.hhc。
    第二步:重新点击“Save project file and compile”按钮进行存盘编译。
    第三步:最后点击主菜单“View/Compiled file”,通过“Browse”指定该chm文件的目录及文件名即可看到我们的作品了(图8)。
      的确也够简单的了,只要有完整的HTML源文件,激活Html Help Workshop创建一个新的项目文件,将第一个html(通常是default.htm或index.html)加进项目,存盘并编译就大功告成。同样的一组HTML文件,放在网站上是一页一页的网页,变成单一的chm后,则可用作软件辅助说明,而且已经内建了全文检索功能。
      上述介绍的只是制作chm帮助文件的基本步骤。但它的功能远非这些,如:可向HTML文件中插入HTML Help ActiveX控件、Java脚本、弹出式窗口等等。还可将已有的chm文件解压缩变回原来的HTML文件。(福建 王寒晖)摘自《电脑报》