北 京 市 政 府 信 息 中 心
冯 华
---- [ 本 文 为 摘
要, 全 文 可 下 载,Zip 20KB]
----
PowerBuilder 作 为 数据 库 的 前 端 开 发 工 具, 以 其 全 面 的 功 能 和 优 异 的 性 能受 到 广 大 开 发 者
的 青 昧。 利 用PowerBuilder 不 仅 可 以 快 速 方便 地 与 数 据 库 交 互, 而 且 它 提 供 了 丰 富 的 控 制 对
象,能 够 设 计 出 清 晰 美 观 的 用 户 窗 口 界 面,TreeView 控 制 就 是其 中 一 例。TreeView 控 制 项 是 以
树 型 结 构 的 方 式 显 示 有 层次 关 系 的 数 据, 如 图1 就 是 用TreeView 控 制 显 示 了 一 个 分类 的 单 位
库 信 息, 在 每 个 单 位 类 别 下 列 出 所 包 含 的 具体 单 位。
---- 在 本 文 中,
结合 作 者 对PowerBuilder 的 开 发 经 验, 谈 一 谈PowerBuilder 中TreeView 控制 的 使 用 及 编 程 技
巧。
一、 添 加 并 设 置TreeView 项
---- 在PowerBuilder
中 新 建 或 打 开 一 个 窗 口, 在Controls 中 选 择TreeView 控 制 项 放 置 到 窗 口 中。 双 击 该 控 制 打
开 属性 对 话 框, 主 要 设 置 以 下 几 个 属 性 页:
- General: 用 来 设 置TreeView 控 制 项 的 一 些基 本 信
息, 如 控 制 名、 指 定 是 否 显 示 用 以 指 示 体 系 结构 的 线、 是 否 包 含 按 钮、 指 定 边 框 类 型 等。
- Pictures: 用 来 指 定TreeView 控 制 项 各 级 的指 示
图 片, 如 图1 中 的 各 委 办、 计 委 系 统 等 单 位 类 别 为TreeView 控 制 的 第 一 层, 它 们 下 面 所 属
的 具 体 单 位 是 第 二 层,它 们 分 别 标 以 不 同 的 图 片。 在 这 里, 可 以 在Picture Name 框中 键 入 图
片 文 件 名 或 从Stock Picture 框 中 选 择PowerBuilder 提 供的 图 片。
- State:TreeView 控 制 项 的 状 态 图 片, 它 显示 在TreeView
控 制 项 的 左 侧, 指 示 其 所 处 的 状 态。
二、 编 写TreeView 项 处 理 程 序
---- 建 立 好TreeView
控 制 项, 希 望 它 能 按 要 求显 示 数 据, 就 必 须 为 它 编 写 程 序。 要 作 到 这 一 点, 首先 需 要 从 数 据 库
中 查 询 出 所 需 数 据, 然 后 在 将 这 些 数据 生 成TreeView 控 制 项 的 树 型 结 构。 在PowerBuilder 中
与 数 据 库交 互 的 方 式 主 要 有 以 下 三 种:
---- ① 使 用Datawindow
---- ② 使 用DataStore
---- ③ 使 用 数 据 库 游 标
---- 由 于 从 数 据
库中 查 询 出 的 数 据 要 用TreeView 控 制 显 示, 所 以 利 用 后 两 种交 互 方 式 比 较 合 适。 下 面 我 们 就
以 图1 所 示 的TreeView 控制 项 为 例, 说 明 为TreeView 控 制 项 编 写 程 序 的 步 骤:
---- ① 创 建 一 个
窗口, 并 在 其 上 创 建TreeView 控 制, 控 制 名 为tv_dw。
---- ② 在 窗 口
的Open 事 件 中 编 写 如 下 程 序:
... ...
---- 由 于 用TreeView
控制 浏 览 数 据 需 要 把 查 询 结 果 生 成TreeView 的 树 型 结 构, 这其 中 要 经 历 查 询 和 生 成 树 型 结 构
两 个 过 程, 因 此 如 果要 在 一 个 事 件 中 查 询 出 所 有 数 据 并 生 成 树 型 结 构 势必 会 影 响 程 序 执 行 效
率, 这 在 数 据 量 较 大 的 情 况 下 尤为 突 出。 为 了 降 低 这 种 影 响, 我 们 可 以 在 打 开 带 有TreeView
控 制 的 窗 口 时 只 生 成 并 显 示 部 分 数 据, 然 后 在 选 中 某项 时 生 成 并 显 示 此 项 下 的 具 体 数 据。 例
如 在 图1 的 例子 中, 在 打 开 窗 口 时 只 生 成 并 显 示 单 位 类 别 数 据, 当选 中 某 一 单 位 类 别 后 再 生 成
并 显 示 此 类 别 下 的 所 有单 位, 这 就 需 要 用 到TreeView 控 制 的itempopulate 事 件。
---- 在tv_dw 控 制
对 象的itempopulate 事 件 中 编 写 如 下 程 序:
... ...
---- 以 上 给 出
了PowerBuilder 中TreeView 的 实 现 方 法, 它 是 最 普 遍、 最 常 用 的 一 种 实 现方 法, 其
实,TreeView 控 制 及 其 编 程 相 对PowerBuilder 中 的 其 他控 制 项 来 说 较 为 复 杂, 在 生 成 的 树 型
结 构 上 的 所 有 维护 工 作, 如 增 加、 删 除、 修 改 等 都 需 要 编 程 来 完 成,这 就 需 要 编 写 大 量 的 程 序
代 码, 不 过 树 型 结 构 的 简 明直 观 的 风 格 的 确 为 程 序 增 色 不 少, 有 兴 趣 的 读 者 不 妨试 一 试TreeView,
相 信 一 定 不 会 令 您 失 望 的。 |