• 当前位置:首页>>PowerBuilder>>PowerBuilder脚本>>PB下使用TreeView控件实现多级分类检索
  • PB下使用TreeView控件实现多级分类检索
  •     PowerBuilder 中 的TreeView 控 件 为 树 状 列 表, 其 特 点 是 信 息 项 呈 树 状 层 次 结 构, 且 形 式 灵 活, 可 展 开 也 可 回 缩, 使 用 鼠 标 进 行 控 制, 操 作 简 便。 因 此 在 应 用 中, 可 将 其 与DataWindow 配 合, 一 个 提 供 信 息 的 分 类 体 系, 一 个 提 供 具 体 信 息, 实 现 信 息 的 多 级 分 类 检 索, 这 样 可 大 大 地 方 便 查 询, 提 高 系 统 的 实 用 性。

    ---- 在PowerBuilder 下,TreeView 控 件 的 开 发 技 术 一 般 较 为 复 杂, 但 如 果 将 它 的 构 成 机 制 及 主 要 事 件、 函 数 领 会 清 楚, 掌 握 它 并 不 困 难。 下 面 就 是 使 用TreeView 控 件 实 现 多 级 分 类 检 索 涉 及 的 主 要 开 发 技 术。

    一、TreeView 控 件 的 信 息 构 成 及 创 建
    ---- TreeView 控 件 的 基 本 信 息 单 位 是TreeViewItem 项, 它 们 按 树 状 层 次 结 构 进 行 组 织( 如 图1 所 示), 每 个TreeViewItem 项 一 般 具 有 下 列 主 要 属 性:

    ---- Data:Any 类 型 数 据, 该 项 对 应 的 内 部 值。
    ---- Label:String 型 数 据, 该 项 对 应 的 显 示 文 字。

    ---- Children:Boolean 型 数 据, 为Ture 时 表 示 该 项 还 有 下 一 层( 如 图1 中 项item1), 为False 时 表 示 该 项 没 有 下 层, 不 能 被 展 开( 如 项item111)。

    ---- PictureIndex:Integer 型 数 值, 该 项 对 应 的 正 常 图 标 在 图 标 队 列 中 的 编 号。

    ---- SelectedPictureIndex:Integer 型 数 值, 该 项 对 应 的 选 中 图 标 在 图 标 队 列 中 的 编 号。

    ---- 通 过TreeView 控 件 查 阅 信 息, 首 先 要 将 信 息 转 化 成 相 应 的TreeViewItem 项, 插 入 到TreeView 控 件 中。 这 个 工 作 可 借 助PB 提 供 的 函 数 来 完 成。

    二、TreeView 控 件 实 现 多 级 分 类 检 索 涉 及 的 主 要 事 件
    ---- 让TreeView 控 件 和DataWindow 配 合, 完 成 信 息 的 多 级 分 类 检 索, 开 发 过 程 主 要 涉 及 下 列 三 个TreeView 事 件:

    ---- Constructor 事 件: 该 事 件 在 控 件 创 建 时 触 发

    ---- 选 中 该 事 件 主 要 用 来 插 入 第 一 层TreeViewItem 项, 这 样 用 户 一 进 入 检 索 界 面, 第 一 层 信 息 项 就 会 出 现 在 控 件 中。

    ---- ItemPopulate 事 件: 该 事 件 在 某TreeViewItem 项 第 一 次 展 开 时 触 发, 触 发 的 同 时 系 统 会 将 该TreeViewItem 项 的 句 柄 通 过 参 数handle 传 递 过 来。

    ---- 选 中 该 事 件 主 要 用 来 插 入 当 前TreeViewItem 项 对 应 的 下 层 信 息 项。 选 择 这 个 事 件 插 入 下 层 信 息 项, 开 发 时 只 需 考 虑 插 入 本 项 的 直 属 下 层, 不 必 去 管 下 层 的 下 层, 可 大 大 简 化 开 发 工 作; 另 外, 由 于 用 户 在 执 行 查 询 时 一 般 只 涉 及 一 些 个 别 类, 那 些 没 有 涉 及 的 信 息 类 没 有 展 开, 因 而 没 有 必 要 建 立 下 层 信 息 项, 在 这 里 做 到 了, 因 此 改 善 了 应 用 的 执 行 效 率。

    ---- SelectionChanged 事 件: 该 事 件 在 每 次 变 更 选 择 项 后 触 发, 触 发 的 同 时 系 统 会 将 变 更 前 后 选 择 项 的 句 柄 通 过 参 数oldhandle、newhandle 传 递 过 来。

    ---- 选 中 该 事 件 主 要 用 来 控 制DataWindow 显 示 当 前 信 息 类 的 内 容。 这 样 每 次 在TreeView 控 件 中 选 中 一 个 信 息 项,DataWindow 即 刻 将 其 详 细 信 息 显 示 出 来。

    三、 具 体 应 用 实 例
    ---- 笔 者 曾 参 与 开 发 了 一 套 医 院 信 息 管 理 系 统, 其 中 当 前 有 效 医 嘱 分 类 检 索 就 是 采 用TreeView 控 件 和DataWindow 配 合 完 成 的, 图2 就 是 它 的 操 作 界 面。

    ---- 界 面 上 的TreeView 控 件 按 多 级 分 类 体 系 给 出 了 当 前 所 有 有 效 医 嘱 项 目, 每 在 其 中 选 中 一 个 医 嘱 项 目, 旁 边 的DataWindow 即 会 列 出 实 施 该 项 医 嘱 的 病 人 清 单, 并 给 出 人 数 统 计 结 果。 其 中 医 嘱 项 目 的 分 类 是 这 样 进 行 的: 首 先 根 据 医 嘱 的 性 质 进 行 了 一 级 分 类, 分 为 长 期、 临 时 两 大 类; 在 一 级 分 类 的 基 础 上 又 根 据 医 嘱 的 种 类 进 行 了 二 级 分 类, 长 期 医 嘱 分 为 药 物 类、 护 理 类, 临 时 医 嘱 分 为 药 物 类、 护 理 类、 检 查 类; 在 二 级 分 类 的 基 础 上 又 根 据 医 嘱 的 具 体 类 型 进 行 了 三 级 分 类, 药 物 类 分 为 口 服、 肌 肉 注 射、 静 脉 点 滴 等 类, 护 理 类 分 为 特 护、 一 级 护 理、 二 级 护 理 等, 检 查 类 分 为 各 类 具 体 检 查, 由 此 形 成 了 三 级 分 类 体 系。

    ---- 为 了 简 化 编 程, 窗 口 上 又 增 设 两 个DataStore 对 象--ds_yzzl 和ds_yzjtzl, 其 中ds_yzlx 的 作 用 是 根 据 医 嘱 性 质 到 库 中 提 取 当 前 医 嘱 种 类, 而ds_yzjtlx 则 是 根 据 医 嘱 性 质、 种 类 到 库 中 提 取 当 前 有 效 医 嘱 的 具 体 类 型。

    ---- 下 面 即 是3 个 事 件 的 对 应 脚 本:

    TreeView 控件Constructor 事件
    TreeViewItem tv_new

    ---- // 建 立 一 个 图 标 队 列, 供 其 中 的TreeViewItem 项 引 用, 在 这 里 建 立 主 要 是 为 了 能 够 控 制 图 标 大 小

    [1] [2] [3] 下一页  

  • 上一篇:无
    下一篇:PB中读取地磅BCD解码