⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fox02.txt

📁 Vfp 文档 一些经典编程文章 可供初学者学习编程时使用
💻 TXT
字号:
动态统计图在VFP中的实现

  一个好的数据库应用系统中,形象、直观、易懂的统计图形是必不可少的,但现有的几种方法都不太理想。VFP3.0提供了图形向导,用户可以按照向导的提示逐步操作,最终获得图形。但这种方法在实际中并不适用,因为由此得出的图形是静态的,而且用户关心的只是能否按所给数据得出图形,而不愿看到太多的中间操作步骤。Gengraph程序中的Updategrph过程可以用来实现统计图数据更新,但这种方法只适用于Foxpro 
for Windows 
  2.5(2.6),在VFP3.0中Gengraph对Updategrph过程不再支持。DDE 
也可用来实现VFP与EXCEL等具备作图能力的应用程序间的通讯,从而达到作图的目的,但这种方法实现起来较为复杂。笔者通过查阅Micro 
soft公司的技术开发文档,找到了两种比较简单实用的出图方法。 
  一、利用EXCEL 
  首先生成EXCEL APPLICATION OLE对象,然后用EXCEL内嵌的VBA对其进行操作,达到出图的效果。运用这种方法的前提是机器中应装有E 
XCEL。 
  程序如下: 
  *利用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来更新统计图(不直接显示),并将更新后的数据交给OleBo undControl来显示。如下图所示: 图1 
  表单的数据环境中用到两个数,表testdata内含用于作图的原始数据,template为统计图数据表。二者结构见后文的说明。表单中各控件的典型属性如下: 
  thisform.pageframe1.page1.grid1.RecordSource=‘testdata ’thisform.pagefr 
ame1.page2.oleboundcontrol1.ControlSource= ‘template.olegraph’thisform.page 
frame1.page2.oleboundcont rol1.AutoActive=1 
  &&防止因双击图形而进入MS-GRAPH的编辑窗口 
  范例中,单击‘统计图’按钮,根据表格中的初始数据给出统计图。修改表格中的数据后,再单击‘统计图’按钮,会得出更新后的统计图。‘统计图’按钮clicked事件代码如下: 

  *清除原有的统计图数据 
  Select template 
  Zap 
  *选择数据,自动统计 
  Select testdata 
  Do(_Gengraph) with ‘Autograph’,3,1,‘动态统计图示例’, .t.,.t.,.t.,‘te mplate’,.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的结构如下: 表1 
  以上两种方法在VFP3.0及Windows3.2环境下调试通过。 
  石家庄军械工程学院 (050003) 王俊 
《计算机世界报》98年7期 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -