在VFP中如何自动生成统计图
一张漂亮的统计图能更加直观地反映数据的内在联系,利用VFP的图形向导,我们能够轻易地制作出统计图。但是,在应用程序中我们是不可能让用户自己设计统计图的。如何让VFP自动生成统计图呢?
一、VFP对统计图的管理
使用过图形向导的用户都知道,在最后的一步,VFP会提示你将图形保存到TABLE中,这是为什么?原来,VFP将作图的各种数据都放入一TABLE中,在这TABLE中,只有一个通用型字段OLEGRAPH。通过OLEGRAPH字段,利用OLE技术,系统自动调用MS-GRAPH进行作图。
二、相关的函数
在VFP中,使用DO(_GenGraph)with parameter1, parameter2, .....parameter9函数完成相关的绘图操作。其中,九个参数中大致含义如下(为节约篇幅起见,这里只介绍其主要的参数):
parameter1 | 指明绘图操作是否为自动执行,如是,该参数的取值为“AutoGraph”。 |
Parameter2 | 指明统计图形的类型:圆饼图、直方图等,分别用数值表示。 |
Parameter4 | 设定统计图的标题。 |
Parameter8 | 设定存放统计图数据的TABLE(表)。 |
Parameter9 | 指明统计图的摆设方式:T表示将统计图放在FORM中。 |
三、设计实例:
假设有一数据库CZ.DBF,今欲根据上述资料作一统计图。其内容如下:
季度 | 产值 |
一季度 | 1200 |
二季度 | 3500 |
三季度 | 2300 |
四季度 | 4600 |
1.建立一TABLE(表)GRAPH1.dbf,里面只能有一字段OLEGRAPH,类型为通用字段。
2.新建一表单FORM1,将CZ.DBF和GRAPH1.DBF引入该表单的数据环境,并将GRAPH1.DBF的EXCLUSIVE设为真值T。
3.在FORM1中添加一OLEBOUNDCONTROL对象,设定其CONTROLSOURCE为GRAPH1.OLEGRAPH。同时加入一按钮,设定其标题为“绘图”。
4.为了保持图形的动态更新(不受GRAPH1中的“老”数据影响),在FORM的ACTIVE
事件中加入如下代码:
set safe off
sele graph1
zap
set safe on
5.在“绘图”对象的CLICK事件中,加入下述代码:
wait ‘正在绘图,请稍候’window nowait
sele cz
sele 季度,产值 from cz into cursor tmp
do (_gengraph ) with ‘autograph',;
11,1,‘订单统计图’,1,1,1,‘graph1',.t.
use in tmp
thisform.oleboundcontrol1.refresh
wait ‘绘图完毕!’window nowait