Software 版 (精华区)

发信人: checcy (老巴夺), 信区: Software
标  题: Office 编 程 技 术: 控 制Office 助 手 (上)
发信站: 哈工大紫丁香 (Mon Apr  6 12:06:16 1998), 转信

 

  Office 编 程 技 术: 控 制Office 助 手 (上)
                                  

                                 叶 琴 


---- Microsoft Office 97 使 用Office 助 手 来 提 供 一 个 单 一
的 在 线 帮 助 源。Office 助 手 能 够 为 程 序 员 正 在 进 行 的
任 务 提 供 编 程 技 巧, 回 答 问 题, 并 从 应 用 程 序 中 传 递
消 息。 程 序 员 可 以 在 自 己 的Visual Basic 应 用 程 序 中
 用Office 助 手 发 出 信 息, 指 导 用 户 完 成 任 务, 还 可 以
在 用 户 选 择Office 助 手 气 球 上 的 一 个 控 件 后 运 行 程 
序。 通 过 使 用Microsoft Office 对 象 模 型 中 的 助 手 部 分 可
以 控 制Office 助 手、 气 球 以 及 气 球 中 所 有 控 件。 

使 用“Office 助 手” 

---- 在 一 个Office 应 用 程 序 中, 用 户 可 选 择 助 手 的 形 
象, 确 定 在 什 么 情 况 下 显 示 助 手。 在Visual Basic 应 用 程
序 中, 可 以 让 助 手 可 视, 具 有 动 画 效 果, 并 把 它 的 窗
口 移 到 屏 幕 的 不 同 位 置, 还 可 显 示 具 有 各 种 信 息 和
控 件 的 气 球。 注 意: 不 能 录 制 助 手 的 动 画 或 气 球 的 动
作, 也 不 能 录 制 在Office 助 手 对 话 框 中 选 择 的 选 项。 

---- 在Visual Basic 应 用 程 序 中 应 用 助 手 的 第 一 步 就 是
要 确 定 用 户 希 望Office 助 手 提 供 信 息 的 程 度。 在Office
助 手 对 话 框 的Options 表 中, 用 户 可 设 置 助 手 的 位 置,
助 手 提 供 的 帮 助 主 题 的 类 型 以 及 助 手 对F1 键 的 响 应。

---- 可 以 用 助 手 对 象 的 属 性 来 确 定 用 户 为 助 手 做 的
选 择。 用 户 的 每 个 选 择 对 应 于 助 手 对 象 的 一 个 属 性。
例 如, 如 果 用 户 在Office 助 手 对 话 框 的Options 中 选 择 了
“ 响 应F1” 的 选 项, 那 么AssitWithHelp 属 性 将 返 回True。 

---- 如 果 用 户 的 选 择 表 明 他 希 望 助 手 的 帮 助, 可 以 让
应 用 程 序 在 一 个 气 球 中 显 示 文 本 或 提 示, 或 者 在 一
个 消 息 框 或 输 入 框 中 显 示 它 们, 并 让 助 手 提 供 从 应
用 程 序 中 自 动 发 出 的 小 技 巧。 Office 助 手 的 动 画 效 果
多 达34 种。 当 把 一 种MsoAnimation 类 型 常 数 分 配 给 助 手 对
象 的 动 画 属 性 时, 助 手 将 在 某 一 特 定 情 况 下 以 一 个
特 定 的 动 画 效 果 响 应。 根 据 用 户 所 选 助 手 的 不 同, 动
画 属 性 的 设 置 可 能 也 可 不 导 致 任 何 明 显 的 动 画 效 
果, 但MsoAnimationType 常 数 对 所 有 助 手 都 有 效。 

---- 注 意: 也 可 以 为 气 球 对 象 分 配MsoAnimationType 常 
数, 这 样 助 手 将 在 气 球 出 现 的 时 候 执 行 特 定 的 动 画
效 果。 

---- 下 面 给 出 一 个 例 子, 当 在 对 话 框Options 中 选 择“ 显
示 告 警” 选 项 后, 助 手 将 显 示 一 条 消 息; 如 果 不 选 此
项, 将 显 示 一 个 标 准 消 息 框。 在 显 示 消 息 时, 助 手 是
动 画 的; 当 用 户 关 闭 气 球 后, 助 手 的Visible 属 性 将 恢
复 为 此 例 运 行 之 前 的 值。 

hdng = "Empty field"
msg = "You need to enter a part number " _
        & "before you can proceed."
If Assistant.AssistWithAlerts = True Then
With Assistant
   userState = .Visible
   .Visible = True
    Set bln = .NewBalloon
   With bln
        .Mode = msoModeModal
        .Button = msoButtonSetOK
        .Heading = hdng
        .Text = msg
        .Animation = msoAnimationGetAttentionMinor
        ret = .Show
   End With
   .Visible = userState
End With
Else
ret = MsgBox(msg, vbOKOnly, hdng)
End If

创 建“Office 助 手” 气 球 

---- 气 球 对 象(Balloon) 是Office 助 手 对 象 模 型 中 最 重 要
的 部 分。 程 序 员 可 使 用 气 球 向 用 户 传 递 消 息, 或 为 自
己 的Visual Basic 应 用 程 序 向 用 户 请 求 信 息。 气 球 的 类
型 有 多 种, 每 种 都 包 含 标 签、 检 查 框 以 及 一 些 图 表 类
型。 虽 然 一 次 只 能 显 示 一 个 气 球, 但 可 以 创 建 多 个 气
球 对 象 并 用 变 量 把 它 们 存 起 来 备 用, 而 且 通 过 重 设
属 性 可 重 复 使 用 任 何 气 球。 

---- 要 创 建 一 个 气 球, 必 须 使 用 助 手 对 象 的NewBalloon
属 性。 这 个 属 性 返 回 的 气 球 是 空 的。 这 时 可 以 用Mode
属 性 来 定 制 这 个 气 球 应 如 何 响 应 用 户 的 操 作。 你 可
以 用Heading 属 性 在 气 球 上 加 一 个 头, 用Text 属 性 在 气 球
体 上 添 加 文 本, 如 果 愿 意 还 可 以 添 加 控 件 和 图 表。 最
后, 你 要 用Show 方 法 来 显 示 你 设 计 好 的 气 球。Show 方 法
在 气 球 一 存 在( 即 设 计 好 后) 就 显 示 它, 因 此, 在 设
置 或 修 改 气 球 后 必 须 使 用Show 方 法 来 显 示 它。 

---- 可 以 显 示 几 种 类 型 的 气 球, 气 球 对 象 所 表 示 的 类
型 是 用Mode 属 性 表 示 的, 可 用 以 下MsoModeType 常 数 来 设
置 这 个 属 性:msoModeModal,msoModeAutoDown, 或
msoModeModeless。 

---- . 模 式 气 球(msoModeModal) 要 求 用 户 的 全 部 注 意 力,
因 为 当 这 种 气 球 显 示 时, 键 盘 和 鼠 标 的 活 动 被 限 制
在 气 球 上。 模 式 气 球 最 好 用 于 警 告 和 关 键 消 息 的 发
布。 下 面 的 例 子 使 用 一 个 模 式 气 球 来 提 示 用 户 是 否
不 作 修 改 存 储 就 关 闭 当 前 激 活 的 文 件。 可 以 用 单 击
按 纽 得 到 的 值 来 决 定 事 件 是 否 继 续。 你 可 用 这 个 例
子 作 为 事 件 过 程 的 一 部 分, 这 个 过 程 就 是 文 件 关 闭
或 不 关 闭。 另 外 也 可 用 一 系 列 的 气 球 引 导 用 户 完 成
一 个 过 程。 

Set bln = Assistant.NewBalloon
With bln
   .Mode = msoBalloonModal
   .Heading = "Warning"
   Text = "If you close this file without saving it, " _
        & "this macro cannot proceed. Close without saving?"
   Button = msoButtonSetOkCancel
   ret = .Show
End With

---- 自 动 消 失 气 球(msoModeAutoDown) 的 功 能 是: 当 用 户
在 应 用 程 序 的 任 何 地 方 单 击 鼠 标 或 键 入 时, 该 气 球
就 自 动 消 失。 这 种 类 型 的 气 球 最 适 用 于 快 速 的, 对 当
前 任 务 来 说 并 不 重 要 的 消 息。 下 面 的 例 子 显 示 了 一
个 使 用 定 制 对 话 框 的 技 巧( 编 码 可 在 一 个 对 话 框 控
制 事 件 过 程 中 运 行)。 因 为 这 个 气 球 是 一 个 自 动 消 失
气 球, 因 此 消 息 在 用 户 单 击 对 话 框 任 何 地 方 时 就 回
马 上 消 失。 

hdng = "Selecting a data source"
msg = "In this dialog box, you can specify a workbook " _
        & "or an external table of data to use for input." _
        & "If you use external data, it must contain delimited" _
        & "fields, rather than fixed-length fields."
With Assistant
   Set bln = .NewBalloon
   With bln
        .Mode = msoModeAutoDown
        .Button = msoButtonSetOK
        .Heading = hdng
        .Text = msg
        ret = .Show
   End With
End With

---- 无 模 式 气 球(msoModeModeless) 的 功 能 是: 用 户 可 在
应 用 程 序 中 完 成 某 个 任 务, 如: 在 文 档 中 键 入 字 符、
使 用 菜 单 和 工 具 条 中 的 命 令 等。 无 模 式 气 球 可 用 来
为 使 用Visual Basic 应 用 程 序 的 用 户 显 示 一 些 过 程 或 技
巧, 作 为 帮 助 用 户 的 一 种 方 式。 

---- 当 用 户 单 击 一 个 无 模 式 气 球 的 控 件 或 按 纽 时, 将
调 用 一 个 回 调 过 程。 因 此Visual Basic 应 用 程 序 必 须 包
含 有 一 个 过 程( 这 个 过 程 的 名 称 在Callback 属 性 中 设 
定) 来 响 应 用 户 的 操 作。 例 如, 如 果 用 户 单 击 了OK 按
纽, 他 是 希 望 关 闭 无 模 式 气 球, 因 此 回 调 程 序 应 通 过
Close 方 法 作 相 应 的 响 应。 下 例 给 出 了 当 气 球 仍 然 显
示 时 用 户 应 跟 随 作 的 一 系 列 步 骤。 回 调 过 程 将 在 单
击OK 的 时 候 关 闭 气 球。 

Sub DisplaySteps()
Set bln = Assistant.NewBalloon
With bln
   .Mode = msoModeModeless
   .Callback = "StepsCallback"
   .BalloonType = msoBalloonTypeNumbers
   .Button = msoButtonSetOK
   .Heading = "To create a new report"
   .Labels(1).Text = "On the File menu, click New Report."
   .Labels(2).Text = "In the New Report dialog box, select the period "
_
        & "(monthly, quarterly, or yearly)."
   .Labels(3).Text = "Click the Create button."
    ret = .Show
End With
End Sub

Sub
StepsCallback(bln As Balloon, btn As Long, priv As Long)
  bln.Close
End Sub

管 理 多 个 气 球 

---- 对 于 气 球 没 有 一 套 对 象, 而 是 可 以 创 建 一 个 数 组
存 储 多 个 气 球 变 量。 你 既 可 以 创 建 并 存 储 几 个 空 气
球, 也 可 以 创 建 并 存 储 具 有 完 整 的 标 题, 文 本 和 控 件
的 气 球。 下 例 创 建 了 一 个 数 组 并 加 入 了 三 个 气 球 对
象, 这 些 对 象 用 编 号 作 标 题。 

Dim myBlnArray(3) as Balloon
With Assistant
   For i = 1 To 3
        Set myBlnArray(i) = .NewBalloon
        myBlnArray(i).Heading = i
   Next
End With

---- 下 面 的 例 子 显 示 了 数 组 中 的 第 二 个 气 球。 
---- myBlnArray(2).Show 

---- 另 外, 可 以 为 每 个 气 球 设 置 一 个 单 独 的 对 象 变 
量, 任 何 时 候 都 可 以 以 这 个 变 量 为 参 考。 如 果 气 球 变
量 被 定 义 为 全 程 变 量, 就 可 以 在 程 序 的 任 何 过 程 中
调 用 它 们。 

在 气 球 中 添 加 文 本 和 控 件 

---- 每 个 气 球 都 能 有 标 题 和 文 本。 在 默 认 情 况 下, 每
个 气 球 的 底 部 有 一 个OK 按 纽。 当 然, 它 也 可 以 包 含 各
种 按 纽 的 组 合 或 一 个 按 纽 都 没 有( 要 显 示 无 按 纽 的
气 球 必 是 一 个 带 按 纽 标 签 的 无 模 式 气 球; 关 于 按 纽
标 签, 参 见“ 添 加 和 修 改 标 签”)。 要 强 调 某 信 息 或 给
出 更 详 细 的 信 息, 可 以 在 标 题 上 添 加 一 个 图 标, 也 可
在 能 够 显 示 文 本 的 任 何 地 方 能 添 加 点 位 图,Windows 元
文 件, 或 者Macintosh 的pict 文 件。 另 外, 每 个 气 球 都 能 包
含 最 多5 个 编 号 的, 带 项 目 符 号 的 或 带 按 纽 的 标 签,
以 及 最 多5 个 检 查 框; 可 以 用 这 些 元 素 向 用 户 提 供 或
返 回 详 细 的 信 息。 

设 置 标 题 和 文 本 

---- 气 球 的 最 基 本 元 素 是 标 题 和 显 示 在 顶 部 的 简 单
文 本。 标 题 和 文 本 都 是 可 选 的; 你 可 以 显 示 一 个 气 球
既 没 有 标 题 也 没 有 文 本。 标 题 和 文 本 的 设 置 需 要 使
用Heading 和Text 属 性。 另 外 通 过 设 置Button 属 性 为 某
 一MsoButtonSetType 常 数 可 确 定 在 气 球 底 部 应 显 示 哪 个
按 纽。 下 例 为 在 一 个 模 式 气 球 上 显 示 一 个 简 单 的 消
息。 

Set bln = Assistant.NewBalloon
With bln
   .Mode = msoModeModal
   .Button = msoButtonSetYesNo
   .Heading = "Empty file"
   .Text = "The file you specified does not contain any data. Quit now?"
   ret = .Show
End With

---- 例 中 的Show 方 法 返 回 的 值 表 明 了 单 击 了 哪 个 按 纽
来 关 闭 气 球。 返 回 值 可 用 来 确 定 下 一 个 动 作。 前 面 的
例 子 中, 如 果Show 方 法 将ret 值 设 为msoBalloonButtonYes, 则
会 根 据 用 户 的 要 求 停 止 正 在 运 行 的 宏。( 未 完 待 续) 


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


-- 
*********************************
Chengyan Che - Software Freelancer
Harbin, P.R.China
mailto: checcy@public.hr.hl.cn
ICQ: 5116726

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: checcy@public.hr.hl.]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:211.978毫秒