Software 版 (精华区)

发信人: checcy (老巴夺), 信区: Software
标  题: 动 态 统 计 图 在VFP 中 的 实 现 
发信站: 哈工大紫丁香 (Mon Apr  6 12:10:38 1998), 转信

动 态 统 计 图 在VFP 中 的 实 现 

     石 家 庄 军 械 工 程 学 院(050003) 王 俊 

---- 一 个 好 的 数 据 库 应 用 系 统 中, 形 象、 直 观、 易
懂 的 统 计 图 形 是 必 不 可 少 的, 但 现 有 的 几 种 方 法
都 不 太 理 想。VFP3.0 提 供 了 图 形 向 导, 用 户 可 以 按
照 向 导 的 提 示 逐 步 操 作, 最 终 获 得 图 形。 但 这 种
方 法 在 实 际 中 并 不 适 用, 因 为 由 此 得 出 的 图 形 是
静 态 的, 而 且 用 户 关 心 的 只 是 能 否 按 所 给 数 据 得
出 图 形, 而 不 愿 看 到 太 多 的 中 间 操 作 步 骤。Gengraph
程 序 中 的Updategrph 过 程 可 以 用 来 实 现 统 计 图 数 据
更 新, 但 这 种 方 法 只 适 用 于Foxpro for Windows 2.5(2.6
), 在VFP3.0 中Gengraph 对Updategrph 过 程 不 再 支 持。DDE
也 可 用 来 实 现VFP 与EXCEL 等 具 备 作 图 能 力 的 应 用 程
序 间 的 通 讯, 从 而 达 到 作 图 的 目 的, 但 这 种 方 法
实 现 起 来 较 为 复 杂。 笔 者 通 过 查 阅Microsoft 公 司 的
技 术 开 发 文 档, 找 到 了 两 种 比 较 简 单 实 用 的 出 图
方 法。 

一、 利 用EXCEL

---- 首 先 生 成EXCEL APPLICATION OLE 对 象, 然 后 用EXCEL
内 嵌 的VBA 对 其 进 行 操 作, 达 到 出 图 的 效 果。 运 用
这 种 方 法 的 前 提 是 机 器 中 应 装 有EXCEL。 

---- 程 序 如 下: 

      利 用EXCEL 和VBA 做 动 态 统 计 图 
      创 建EXCEL 对 象

---- oleapp=CreateObject(‘excel.application’) 

      添 加 工 作 簿

---- oleapp.WorkBooks.Add 

      给 各 单 元 格 赋 值( 也 可 将 表 中 的 数 据 以 数 组 形
      式 注 入 到 各 单 元 格)

oleapp.Cells(1,1).value=‘departa’
oleapp.Cells(2,1).value=‘departb’
oleapp.Cells(3,1).value=‘departc’
oleapp.Cells(1,2).value=100
oleapp.Cells(2,2).value=200
oleapp.Cells(3,2).value=300

      选 定 数 据

---- oleapp.Range(‘a1:b3’).Select 

      添 加 统 计 图

---- oleapp.Charts.Add 

      使EXCEL 可 见

---- oleapp.Visible=.t . 

      打 印 统 计 图

---- oleapp.ActiveASheet.PrintOut 

---- 这 种 方 法 的 优 点 是 可 以 利 用VBA 直 接 打 印 出 统
计 图, 不 足 的 是 屏 幕 中 出 现 了EXCEL 的 菜 单 栏。 

二 利 用GENGRAPH 和OleBoundControl

---- Microsoft 的 技 术 开 发 文 档 中 介 绍 了 以 编 程 方 式
使 用“ 图 形 向 导”, 自 动 创 建 一 个 指 定 的 图 表, 以
及 如 何 使 用 代 码 控 制 图 表 类 型 和 标 题。 

---- DO(_Gengraph)with,.,..., 动 态 出 图。 各 参 数 的 含
义 分 别 为: 

---- parm1: 指 定 统 计 图 是 否 自 动 执 行。 用 于 自 动 出
图 时, 此 参 数 值 应 为‘autograph’。 

---- parm2: 指 定 图 形 类 型。 数 值 型( 范 围1 14)。 各
值 所 代 表 的 具 体 类 型 可 参 见MS GRAPH。 

---- parm3: 指 定 图 形 子 类 别。 数 值 型( 范 围1 3)。 各
值 所 代 表 类 型 可 参 见MS GRAPH。 

---- parm4: 指 定 统 计 图 的 标 题。 字 符 型。 

---- parm5: 指 定XY 轴 显 示 方 向。 逻 辑 型。 若 为.t., 说
明 每 组 的 各 项 是 按 列 来 安 排 的。 

---- parm6: 指 定 统 计 图 是 否 显 示 图 例 说 明。 若 为.t
., 则 显 示, 否 则 不 显 示。 

---- parm7: 指 定 统 计 图 的 调 整 格 式。 若 为.t., 则 显
示 图 形 时 有 暗 色 网 格 作 底 色, 若 为.f., 则 显 示 图
形 时 无 底 色。 

---- parm8: 指 定 存 储 统 计 图 数 据 的 文 件 名。Gengraph
会 将 更 新 后 的 统 计 图 数 据 保 存 到 该 文 件 中。 

---- parm9: 指 定 生 成 图 形 后 是 否 立 即 显 示。 若 为.t
., 则 立 即 显 示, 否 则 不 显 示 更 新 后 的 统 计 图。 

---- 本 方 法 就 是 利 用Gengraph 来 更 新 统 计 图( 不 直 接
显 示), 并 将 更 新 后 的 数 据 交 给OleBoundControl 来 显 
示。 如 下 图 所 示: 

---- 表 单 的 数 据 环 境 中 用 到 两 个 数, 表testdata 内 含
用 于 作 图 的 原 始 数 据,template 为 统 计 图 数 据 表。 二
者 结 构 见 后 文 的 说 明。 表 单 中 各 控 件 的 典 型 属 性
如 下: 

---- thisform.pageframe1.page1.grid1.RecordSource=‘testdata
’ 
----
thisform.pageframe1.page2.oleboundcontrol1.ControlSource=
‘template.olegraph’ 
---- thisform.pageframe1.page2.oleboundcontrol1.AutoActive=1

---- & & 防 止 因 双 击 图 形 而 进 入MS GRAPH 的 编 辑 窗
口 范 例 中, 单 击‘ 统 计 图’ 按 钮, 根 据 表 格 中 的 初
始 数 据 给 出 统 计 图。 修 改 表 格 中 的 数 据 后, 再 单
击‘ 统 计 图’ 按 钮, 会 得 出 更 新 后 的 统 计 图。‘ 统
计 图’ 按 钮clicked 事 件 代 码 如 下: 

      清 除 原 有 的 统 计 图 数 据

---- Select template 
---- Zap 

      选 择 数 据, 自 动 统 计

---- Select testdata 

---- Do(_Gengraph) with ‘Autograph’,3,1,‘ 动 态 统 计 图
示 例’,.t.,.t.,.t.,‘template’,.t. 

      更 新 统 计 图

Select template
Goto bottom
thisform.pageframe1.page2.Refresh
thisform.pageframe1.page2.Zorder(0)

---- 几 点 说 明: 

      Gengraph 将 生 成 的 统 计 图 数 据 追 加 到template 尾
      部, 为 确 保 显 示 更 新 后 的 统 计 图, 范 例 中 先 清
      空template, 待 生 成 统 计 图 后 再 将 指 针 定 位 到 最
      后 一 条 记 录。 
      实 际 应 用 中, 可 通 过 改 变parm2 和parm3 来 改 变 图
      表 类 型 及 子 类 型, 通 过 改 变parm4 来 改 变 统 计 图
      标 题, 通 过 改 变parm6 来 指 定 是 否 显 示 图 例。 
      Gengraph 只 对 当 前 工 作 区 中 的 数 据 进 行 处 理,
      当 不 能 直 接 对 数 据 进 行 处 理 时, 可 以 用SELECT
      命 令 结 合 有 关 函 数 取 得 所 需 统 计 数 据, 并 置
      于 一 临 时 表 中, 再 交Gengraph 处 理。 
      表template 和testdata 的 结 构 如 下:

         表template 表testdata
        字段名
                       类型
                                长度
                                          字段名
                                                     类型
                                                             长度
       olegraph
                       Gen
                                 4
                                          depart
                                                       C
                                                              10
            
                         
                                  
                                         produce
                                                       N
                                                              4


---- 以 上 两 种 方 法 在VFP3.0 及Windows3.2 环 境 下 调 试
通 过。 
-- 
*********************************
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)
页面执行时间:2.699毫秒