帮 助 文 件 速 成( 下)

蓝 深 远 望 系 统 集 成 有 限 公 司 杜 香 聪


---- 现 在 介 绍 第 二 部 分, 对 帮 助 文 件 编 程。

---- 帮 助 文 件 的 最 终 目 的 是 要 应 用 到 自 己 程 序 中。 现 以 最 常 用 的 三 种 开 发 工 具VB,VFP,DELPHI 分 别 举 一 最 简 单 例 子。

VB

---- 进 入VB, 选File/New Project, 出 现 一 空 白 窗 体Form1, 加 一 个 通 用 对 话 框CommondDialog1 到Form1, 点 取Menu Editor, 设 置 一 菜 单, 一 级 菜 单 有 二 项:(Caption 分 别 为:)File ,Help, 而File 的 下 一 级 菜 单Exit,Help 的 下 一 级 菜 单 为Contents, KeyWords Search, About, 对 应 的Name 属 性 分 别 为:mnuFile,mnuHelp,mnuExit,mnuContents,mnuSearch,mnuAbou。 假 定 帮 助 文 件 是D:\WINWORD\DXCHLP.HLP。

---- 程 序 代 码 如 下:

Private Sub Form_Load()
 CommonDialog1.HelpFile = "d:\winword\dxchlp.hlp"
End Sub

Private Sub mnuContents_Click()
With CommonDialog1
.HelpCommand = cdlHelpContents  'cdlHelpContents 是 显 示 目 录 的 命 令
.ShowHelp
End With
End Sub

Private Sub mnuSearch_Click()
With CommonDialog1
.HelpCommand = cdlHelpKey  'cdlHelpKey 是 显 示 关 健 字 搜 索 的 命 令
.ShowHelp
End With
End Sub

Private Sub mnuAbout_Click()
aboutform.Show 1           ' 以 模 态 显 示" 关 于" 窗 口
End Sub

Private Sub mnuExit_Click()
End
End Sub

 以 上 可 用 调 用 动 态 联 结 库 的 方 法, 代 码 如 下:
(1) 模 块 文 件:
Global Const HELP_CONTENTS = &H3&
Global Const HELP_KEY = &H101
Declare Function WinHelp Lib "user32" Alias "WinHelpA"
 (ByVal hwnd As Long, ByVal lpHelpFile As String, ByVal
 wCommand As Long, ByVal dwData As Long) As Long ' 
必 须 同 一 行; 为WIN95,NT
 ' Declare Function WinHelp Lib "User" (ByVal hwnd As 
Integer, ByVal lpHelpFile As String, ByVal wCommand As
 Integer, dwData As Any) As Integer ' 必 须 同 一 行; 为WIN3.X
(2) 窗 体 文 件
Private Sub Form_Load()
App.HelpFile = "d:\winword\dxchlp.hlp"
End Sub

Private Sub mnuContents_Click()
i% = WinHelp(Form1.hwnd, App.HelpFile, HELP_CONTENTS, 0)
End Sub

Private Sub mnuKeySearch_Click()
i% = WinHelp(Form1.hwnd, App.HelpFile, HELP_KEY, 0)
End Sub

DELPHI

---- 进 入DELPHI, 选File/New Project, 出 现 一 空 白 窗 体Form1, 加 一 个 菜 单 控 制Mainmenu1 到Form1, 双 击Mainmenu1, 设 置 其 一 级 菜 单, 有 二 项:(Caption 分 别 为:)File ,Help, 而File 的 下 一 级 菜 单Exit,Help 的 下 一 级 菜 单 为Contents, KeySearch, About, 对 应 的Name 属 性 分 别 为: File1,Help1,Exit1,Contents1,KeySearch1,About1。

---- 因 为 要 用 到About 关 于 窗 口, 所 以 加 入 一 新 窗 体, 其Name 属 性 为AboutBox, 再 加 入 一BitBtn 按 钮OKButton 到AboutBox 窗 体,OKButton 的Caption 属 性 为OK,Glyph 属 性 为 一 确 定 图 片 或 干 脆 为 空。

---- 假 定 帮 助 文 件 是D:\WINWORD\DXCHLP.HLP。

---- 程 序 代 码 如 下:

program Delhelp;

uses
  Forms,
  Unihelp in 'UNIHELP.PAS' {Form1},
  Uniabout in 'UNIABOUT.PAS' {AboutBox};

{$R *.RES}

begin
  Application.CreateForm(TForm1, Form1);
  {Application.CreateForm(TAboutBox, AboutBox);}
{注意注掉这一行,因为AboutBox是在运行时产生的,详见代码}
  Application.Run;
end.

unit Unihelp;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, Menus,
  uniAbout;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Help1: TMenuItem;
    contents1: TMenuItem;
    KeySearch1: TMenuItem;
    About1: TMenuItem;
    Exit1: TMenuItem;
    procedure Exit1Click(Sender: TObject);
    procedure contents1Click(Sender: TObject);
    procedure KeySearch1Click(Sender: TObject);
    procedure About1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Exit1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.contents1Click(Sender: TObject);
begin
Application.HelpFile := 'd:\winword\dxchlp.hlp';
Application.HelpCommand(Help_Contents,0); { 显 示 帮 助 目 录}
end;

procedure TForm1.KeySearch1Click(Sender: TObject);
begin
Application.HelpFile := 'd:\winword\dxchlp.hlp';
Application.HelpCommand(Help_PartialKey,0); { 显 示 关 键 字 搜 索}


end;

procedure TForm1.About1Click(Sender: TObject);
var
   myAbout:TAboutbox;
begin

myAbout:=TAboutbox.Create(Self);{myAbout 是 类TAboutbox 的 一 个 实 例}
myAbout.ShowModal; { 显 示“ 关 于”}

end;

end.

unit Uniabout;

interface

uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, StdCtrls,
  Buttons, ExtCtrls;

type
  TAboutBox = class(TForm)
    OKButton: TBitBtn;
    procedure OKButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  AboutBox: TAboutBox;

implementation

{$R *.DFM}

procedure TAboutBox.OKButtonClick(Sender: TObject);
begin
Close;
end;

end.

---- 以 上 可 用 调 用 动 态 联 结 库 的 方 法,DELPHI 中 公 用 动 态 联 结 库, 常 数 等 用 不 着 声 明, 可 拿 来 就 用, 在 上 面 的 窗 体 中 再 加 入 二 个 按 钮,Content,Search, 输 入 以 下 代 码:

procedure TForm1.ContentClick(Sender: TObject);
begin
 WINHELP(form1.ClientHandle,'d:\winword\dxchlp.hlp',HELP_CONTENTS,0);
end;

procedure TForm1.SearchClick(Sender: TObject);
begin
 WINHELP(form1.ClientHandle,'d:\winword\dxchlp.hlp',HELP_KEY,0);
end;

VFP

---- VFP 中 有 内 建 的 菜 单 帮 助 命 令, 另 要 将 帮 助 文 件 设 到 自 己 的 帮 助 文 件 处, 语 句 是:SET HELP TO Drive:\Path\helpfile.hlp, 在 菜 单 位 中 显 示 帮 助 目 录 的 菜 单 项# 是_mst_help, 显 示 帮 助 中 关 键 字 搜 索 的 菜 单 项# 是_mst_hpsch, 现 举 一 例: 进 入VFP, 选“ 文 件”/“ 新 建”/“ 项 目”, 新 建 一 主 程 序main.prg, 输 入 以 下 代 码:
SET DEFAULT TO D:\WINWORD\VFP
SET HELP TO D:\WINWORD\DXCHLP.HLP
PUSH MENU _MSYSMENU
SET SYSMENU OFF
DO MainMenu.MPR

---- 新 建 一 主 程 序 主 菜 单MainMenu, 一 级 菜 单 有File 和Help, 再 设File 的 子 菜 单Exit,Help 的 子 菜 单Contents 和Search,Contents 的 菜 单 项# 是_mst_help, 而Search 的 菜 单 项# 是_mst_ hpsch,Exit 过 程 输 入 以 下 代 码:

POP MENU _MSYSMENU TO MASTER
CLEAR EVENTS
SET SYSMENU TO DEFAULT

---- 以 上 程 序 在P133 兼 容 机, 中 文WORD6.0, 中 文WINDOWS95, 中 文Visual Foxpro3.0,Visual Basic4.0,Delphi1.0 上 运 行 通 过。


中国计算机世界出版服务公司版权所有