程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 如何制作幫助文件

如何制作幫助文件

編輯:Delphi
      帶 有 幫 助 文 件 的 應 用 程 序 無 論 對 程 序 員 還 是 用 戶 都 是 不 同 凡 響 的, 它 能 節 省 印 刷 大 量 用 戶 手 冊 的 開 支, 對 程 序 員 編 輯 修 改 和 用 戶 手 冊 的 復 制 保 存 都 極 為 方 便。 幫 助 文 件 的 另 一 個 很 有 前 景 的 應 用 是 單 獨 作 為 帶 有 圖 文 信 息 的 電 子 圖 書 發 布。
  ---- 在 此 對 幫 助 文 件 的 編 制 及 如 何 在 程 序 中 編 程 調 用 作 一 詳 盡 介 紹。 首 先 介 紹 第 一 部 分, 幫 助 文 件 的 編 寫。
  ---- 幫 助 文 件 的 編 寫 步 驟:
  先 編 寫 存 有 所 有 幫 助 信 息 的 幫 助 源 文 件RTF 文 件。

  編 寫 幫 助 項 目 文 件HPJ 文 件。

  對HPJ 文 件 編 譯, 最 後 生 成HLP 文 件。
  幫 助 源 文 件RTF 文 件 的 編 寫
  ---- 幫 助 源 文 件 是 存 有 所 有 幫 助 信 息 的, 這 是 一 種RTF(Rich Text Format) 文 件, 幫 助 文 件 象 一 本 書, 由 目 錄 及 一 個 個 章 節 組 成, 各 章 節 之 間 的 跳 轉 是 由 定 義 的 熱 點 來 完 成。 現 在 舉 一 具 體 例 子( 由 目 錄 等 五 條 信 息 組 成) 詳 細 說 明。
  ---- 原 始 信 息 由 五 個 章 節 組 成: 目 錄、 概 述、 說 明、 程 序、 安 裝。象 前 面 每 一 節 的 標 題(“ 目 錄”,“ 概 述”, “ 說 明”,“ 程 序”, “ 安 裝”) 在RTF 文 件 中 必 須 以 特 有 的 腳 注( 即$) 明 確 指 定。 對 每 一 節 還 須 指 定 其 跳 轉 名( 腳 注 是# , 跳 轉 名 不 能 是 漢 字), 以 便 標 識, 在 這 我 們 給 每 一 節 分 別 取 名 為:contents , description, explanation ,programming, setup, 對 每 一 節 還 可 指 定 其 搜 索 關 鍵 字( 腳 注 是K), 關 鍵 字 可 以 是 一 個 或 多 個, 漢 字 和 英 文 均 可。
  ---- 具 體 操 作 如 下: 進 入Microsoft Word 中 文 版, 選 擇: 文 件/ 新 建, 先 輸 入 第 一 節 的 內 容: 輸 入 第 一 節 的 標 題:“ 目 錄”, 將 光 標 移 到“ 目 錄” 的 前 面, 選 擇 系 統 菜 單 的“ 插 入”, 選 “ 腳 注 和 尾 注”, 選“ 腳 注” 和“ 自 定 義 標 記”, 輸 入:$ 符 號, 這 時 文 檔 下 方 出 現 腳 注 編 輯 窗 口, 光 標 也 自 動 落 在 文 檔 下 方 的 腳 注 編 輯 窗 口 中, 在 光 標 處 接 著 輸 入 這 一 節 的 標 題:“ 目 錄”, 有 時 看 不 到 文 檔 下 方 的 腳 注 窗 口, 這 只 要 將 系 統 菜 單 中“ 視 圖” 的“ 腳 注” 選 上。
  ---- 下 面 定 義 這 一 節 的 跳 轉 名, 將 光 標 移 到“ 目 錄” 的 前 面, 選 擇 系 統 菜 單 的“ 插 入”, 選 “ 腳 注 和 尾 注”, 選“ 腳 注” 和“ 自 定 義 標 記”, 輸 入:# 符 號, 這 時 文 檔 下 方 出 現 腳 注 編 輯 窗 口, 光 標 也 自 動 落 在 文 檔 下 方 的 腳 注 編 輯 窗 口 中, 在 光 標 處 接 著 輸 入 這 一 節 的 跳 轉 名:“contents”( 有 時 看 不 到 文 檔 下 方 的 腳 注 窗 口, 這 只 要 將 系 統 菜 單 中“ 視 圖” 的“ 腳 注” 選 上) 定 義 這 一 節 的 搜 索 關 健 字。 將 光 標 移 到“ 目 錄” 的 前 面, 選 擇 系 統 菜 單 的“ 插 入”, 選 “ 腳 注 和 尾 注”, 選“ 腳 注” 和“ 自 定 義 標 記”, 輸 入:k 符 號, 這 時 文 檔 下 方 出 現 腳 注 編 輯 窗 口, 光 標 也 自 動 落 在 文 檔 下 方 的 腳 注 編 輯 窗 口 中, 在 光 標 處 接 著 輸 入 這 一 節 的 搜 索 關 健 字, 搜 索 關 健 字 可 以 是 中 文 或 英 文, 一 個 或 多 個, 中 間 用 分 號( 即 ;) 隔 開, 這 兒 我 們 輸 入: 目 錄; 目 次;contents。
  ---- 最 後 定 義 這 一 節 的 順 序 號。 順 序 號 相 當 於 一 本 書 中 各 章 節 的 頁 碼。 將 光 標 移 到“ 目 錄” 的 前 面, 選 擇 系 統 菜 單 的“ 插 入”, 選 “ 腳 注 和 尾 注”, 選“ 腳 注” 和“ 自 定 義 標 記”, 輸 入:+ 符 號, 這 時 文 檔 下 方 出 現 腳 注 編 輯 窗 口, 光 標 也 自 動 落 在 文 檔 下 方 的 腳 注 編 輯 窗 口 中, 在 光 標 處 接 著 輸 入 這 一 節 順 序 號, 如:0001,0002,0003 等。 這 兒 我 們 輸 入:0001.
  ---- 這 樣, 第 一 節 的 腳 注 標 記 全 部 作 完。
  ---- 第 二 節 的 腳 注 標 記 作 法 一 樣。( 第 一 節 和 第 二 節 要 有 分 頁 符, 選 擇 系 統 菜 單 的“ 插 入”, 選 “ 分 隔 符”,“ 分 頁 符”)。
  ---- 在 幫 助 文 件 中, 當 用 戶 在 按 了 綠 色 的 跳 轉 文 本, 就 應 該 跳 轉 到 對 應 的 章 節, 如 何 定 義 一 個 熱 點 跳 轉 呢 ? 因 為 我 們 已 經 定 義 了 第 一 節 的 跳 轉 名, 只 要 將 跳 轉 文 本 與 要 跳 轉 到 的 那 一 節 的 跳 轉 名 聯 系 起 來, 跳 轉 文 本 在RTF 文 件 中 是 帶 雙 下 劃 線 的 文 本, 以 上 例 操 作 如 下:
  ---- 選 擇 系 統 菜 單 上 的“ 格 式”/“ 字 體”, 選 擇“ 字 體”/“ 下 劃 線”, 選“ 雙 線”, 然 後 開 始 輸 入 熱 點 文 本, 這 兒 我 們 輸 入“ 概 述”, 輸 入 完 熱 點 文 本, 清 除 雙 下 劃 線 格 式, 操 作: 選 擇 系 統 菜 單 上 的“ 格 式”/“ 字 體”, 選 擇“ 字 體”/“ 下 劃 線”, 選“ 無”, 清 除 雙 下 劃 線 格 式 後, 緊 接 著 選 擇 隱 藏 文 本 格 式, 輸 入 跳 轉 目 的 地 的 跳 轉 名, 操 作: 選 擇 系 統 菜 單 上 的“ 格 式”/“ 字 體”, 選 擇“ 字 體”/“ 效 果”, 選“ 隱 藏”, 輸 入 跳 轉 目 的 地 的 跳 轉 名, 這 兒 輸 入“description”, 輸 入 完 清 除 隱 藏 文 本 格 式。 清 除 隱 藏 文 本 格 式 的 操 作: 選 擇 系 統 菜 單 上 的“ 格 式”/“ 字 體”, 選 擇“ 字 體”/“ 效 果”, 將“ 隱 藏” 復 選 框 除 去。
  ---- 如 何 定 義 熱 點 彈 出 說 明。 它 與 以 上 熱 點 跳 轉 文 本 一 樣, 只 不 過 它 是 帶 單 下 劃 線 的 文 本。 操 作 如 下: 選 擇 字 符 的 單 下 劃 線 格 式, 輸 入 彈 出 式 熱 點 文 本, 如 上 例 輸 入 的 是“ 單 下 劃 線 的 指 定 說 明 熱 點”, 操 作 如 下: 選 擇 系 統 菜 單 上 的“ 格 式”/“ 字 體”, 選 擇“ 字 體”/“ 下 劃 線”, 選“ 單 線”, 然 後 開 始 輸 入 熱 點 文 本, 這 兒 我 們 輸 入“ 單 下 劃 線 的 指 定 說 明 熱 點”, 輸 入 完 熱 點 文 本, 清 除 單 下 劃 線 格 式, 緊 接 著 選 擇 隱 藏 文 本 格 式, 輸 入 跳 轉 目 的 地 的 跳 轉 名, 這 兒 是 彈 出 窗 口 的 跳 轉 名: 這 兒 輸 入“my_pop_up”, 輸 入 完 清 除 隱 藏 文 本 格 式。 彈 出 窗 口 一 節 要 與 其 它 章 節 用 分 頁 符 分 開。 只 要 指 定 跳 轉 名 即 可。
  ---- 我 們 經 常 看 到 的“ 參 閱”、“see also” 彈 出 窗 口 就 是 這 樣 作 出 來 的。
  ---- 如 何 對 圖 形 指 定 熱 點 跳 轉。 在RTF 文 件 中 使 用 圖 形, 可 以 用 語 句:{bmc 圖 形 文 件 名},bmc 表 示 圖 形 放 在 中 間,bml 表 示 圖 形 放 在 左 邊,bmr 表 示 圖 形 放 在 右 邊, 圖 形 文 件 可 以 是 一 般 的BMP 位 圖 和SHG 熱 點 跳 轉 圖 形 文 件。
  ---- 如 用 戶 在 圖 形 某 處 按 動 時, 會 彈 出 一 個 說 明 窗 口。 而 熱 點 圖 形.shg 文 件 由.bmp 位 圖 文 件 通 過 工 具 軟 件Hotspot Editor 編 輯 而 來。Hotspot Editor 是 隨Visual Basic ( 在VB 的HC 目 錄 下) 和Visual Foxpro( 在VFP 的HELPCOMP 目 錄 下) 發 布 的。 執 行 文 件 名 是SHED.EXE。 操 作: 運 行SHED.EXE, 選File/Open, 裝 入 要 用 到 的 位 圖 文 件。 這 兒 用 一 人 頭 形 位 圖man.bmp, 在 圖 形 上 拖 動, 產 生 一 個 個 熱 點, 雙 擊 任 一 熱 點 區 域, 出 現 一 對 話 框, 只 要 在Context String 處 輸 入 要 跳 轉 或 彈 出 目 的 地 的 跳 轉 名。 熱 點 類 型Type 處 選 取 Jump 跳 轉 式 或 Popup 彈 出 式。 熱 點 區 域 邊 框 屬 性Attribute 選 取 可 見Visible 或 不 可 見Invisible。 在 這 個 例 子 中Context String 輸 入eye_popup,Type 選 取 Popup,Attribute 選 取Invisible ( 隱 去 熱 點 區 域 的 邊 線).
  ---- 以d:winWordman.shg 文 件 名 存 盤, 退 出SHED.EXE。
  ---- 如 何 產 生 固 定 的 不 滾 動 標 題 區 域, 不 滾 動 區 域, 在 顯 示 特 長 的 信 息 時 很 有 用, 可 這 樣 操 作: 用 光 標 將 要 不 滾 動 的 區 域 全 選 上, 點 取 系 統 菜 單 上 的“ 格 式”/ “ 段 落”, 選“ 正 文 排 列”, 將“ 與 下 段 同 頁” 選 上。
  ---- 就 這 樣, 幫 助 信 息 源 文 件 所 有 的 工 作 都 已 作 完, 在Word 中 將 文 件 以RTF 格 式 存 盤。 下 面 進 入 幫 助 項 目 文 件HPJ 的 編 輯。
  建 立 幫 助 項 目 文 件(.HPJ 文 件)
     以 一 實 例 說 明, 語 句 分 號 右 邊 是 注 解
  [OPTIONS]           ; 這 一 節 的 內 容 並 非 必 須
  COMPRESS=0        ; 指 示HLP 文 件 不 壓 縮
  ERRORLOG=my.err   ; 編 譯 錯 誤 存 於 此 文 件
  REPORT=Yes        ; 編 譯 時 報 告
  CONTENTS=contents  ; 目 錄 跳 轉 名
  COPYRIGHT=        ; 版 權 信 息
  DEFFONT=,10,0      ; 字 體 大 小
  BMROOT=.           ; 指 示BMP 文 件 的 存 放 位 置,
    在 同 一 目 錄 下 用 空 白 或“.” 否 則BMROOT=Drive:Path
  HLP=.dxchlp.hlp      ; 表 明 生 成 的 幫 助 文 件 名
  [FILES]              ; 唯 一 重 要 的 一 節
  .Dxchlp.rtf           ; 所 用RTF 文 件 名( 包 括 路 徑)

  ---- [Windows] ; 語 法 Main=" 主 窗 口 的 標 題",( 窗 口 水 平 位 置, 垂 直 位 置, 寬 度, 高 度), 狀 態, 背 景 顏 色(R,G,B), 非 滾 動 區 域 背 景 顏 色(R,G,B), 是 否 總 是 浮 在 其 它 窗 口 上 面(0 為False,1 為True) 例:
  ---- Main=“ 主 窗 口 標 題”,(512,10,512,1000),0,(255,251,240),(192,192,192),0
  ---- ; 語 法: Second=; 語 法 同 上 面 主 窗 口, 例:
  ---- Second=“ 次 級 窗 口 標 題”,(10,10,500,1000),0,(254,251,240),(191,192,192),1
  ---- [CONFIG]
  ---- BrowseButtons() ; 加 一 向 前 向 後 按 鈕
  ---- 其 實 用 不 著 寫 這 麼 多, 最 省 事 的 幫 助 項 目 文 件 是 這 樣 只 有 一 條 語 句, 其 它 全 是 缺 省 值:
  ---- [FILES] ; 節 名 稱
  ---- Myhelp.rtf ; 所 用RTF 文 件 名( 包 括 路 徑, 如c:winWordMyhelp.rtf)
  ---- 以 上hpj 文 件 用 任 何 編 輯 器 編 輯 後 以HPJ 文 件 存 盤。
  對 幫 助 項 目 文 件HPJ 進 行 編 譯, 形 成HLP 文 件
  ---- 編 譯 要 用 編 譯 工 具HC.EXE, 在VB 的HC 目 錄 下 有HC.EXE, 在VFP 的HELPCOMP 目 錄 下 有HC31.EXE 和HC35.EXE, 任 選 一 個 使 用。 操 作:HC 文 件 名, 或HC31 文 件 等, 如:HC31 Myhelp.hpj

   

  ---- 現 在 介 紹 第 二 部 分, 對 幫 助 文 件 編 程。
  ---- 幫 助 文 件 的 最 終 目 的 是 要 應 用 到 自 己 程 序 中。 現 以 最 常 用 的 三 種 開 發 工 具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:WINWordDXCHLP.HLP。
  ---- 程 序 代 碼 如 下:
  Private Sub Form_Load()
   CommonDialog1.HelpFile = "d:winWorddxchlp.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:winWorddxchlp.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:WINWordDXCHLP.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:winWorddxchlp.hlp';
  Application.HelpCommand(Help_Contents,0); { 顯 示 幫 助 目 錄}
  end;

  procedure TForm1.KeySearch1Click(Sender: TObject);
  begin
  Application.HelpFile := 'd:winWorddxchlp.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:winWorddxchlp.hlp',HELP_CONTENTS,0);
  end;

  procedure TForm1.SearchClick(Sender: TObject);
  begin
   WINHELP(form1.ClIEntHandle,'d:winWorddxchlp.hlp',HELP_KEY,0);
  end;

  VFP
  ---- VFP 中 有 內 建 的 菜 單 幫 助 命 令, 另 要 將 幫 助 文 件 設 到 自 己 的 幫 助 文 件 處, 語 句 是:SET HELP TO Drive:Pathhelpfile.hlp, 在 菜 單 位 中 顯 示 幫 助 目 錄 的 菜 單 項# 是_mst_help, 顯 示 幫 助 中 關 鍵 字 搜 索 的 菜 單 項# 是_mst_hpsch, 現 舉 一 例: 進 入VFP, 選“ 文 件”/“ 新 建”/“ 項 目”, 新 建 一 主 程 序main.prg, 輸 入 以 下 代 碼:
  SET DEFAULT TO D:WINWordVFP
  SET HELP TO D:WINWordDXCHLP.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

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved