用VFP6.0编制应用程序时,都希望用图表方式实时反映销售情况、产值产量情况等内容,笔者使用activeX控件ms graphic97图表功能,实现了图表的实时显示.显示效果如图1所示.
一 .创建含有如下控件的窗体
控件名 | 控件 | 属性 |
---|---|---|
标签 Label1 | caption:图表类型 | Font:宋体Fontsize:12 |
标签 Label2 | caption:显示效果 |
字体类型大小同上
按钮组 Optiongroup1 | |
Option1 | caption:二维条状 | 字体类型大小同上
Option2 | caption:三维柱状 | 字体类型大小同上
线框 Shape1 | |
检查框 Check1 | caption:标题 | 字体类型大小同上
检查框 Check2 | caption:栏目标题 | 字体类型大小同上
ole控件 | Oleboundcontrol1 |
图1
二 .程序清单:
(1) 窗体Form1的init事件:
#DEFINE CRLF CHR(13)+CHR(10)
#DEFINE TAB CHR(9)
#DEFINE bartype -4099
SET SAFETY OFF
dime xsss(8),xss(8)
sele 10
use xscx
for ii=1 to 8
go ii
xsss(ii) 量
xss(ii)=品名
endf
SET SAFETY ON
use c:\hgd\forms\pics
cGData = ""+TAB+""+CRLF+;
allt(xss(1))+TAB+str(xsss(1),10,2)+CRLF+;
allt(xss(2))+TAB+str(xsss(2),10,2)+CRLF+;
allt(xss(3))+TAB+str(xsss(3),10,2)+CRLF+;
allt(xss(4))+TAB+str(xsss(4),10,2)+CRLF+;
allt(xss(5))+TAB+str(xsss(6),10,2)+CRLF+;
allt(xss(6))+TAB+str(xsss(7),10,2)+CRLF+;
allt(xss(7))+TAB+str(xsss(8),10,2)+CRLF+;
allt(xss(8))+TAB+str(xsss(8),10,2)+CRLF
THIS.LockScreen = .T.
append general gen1 class "msgraph.chart" DATA m.cGData
THIS.OleBoundControl1.ControlSource = "Gen1"
THIS.OleBoundControl1.HasLegend = .F.
THIS.OleBoundControl1.autoformat(bartype,1)
THIS.LockScreen = .F.
(2) 按钮组Optiongroup1的click事件:
#DEFINE bartype -4099
#DEFINE coltype -4100
*#DEFINE pietype -4102
DO CASE
CASE THIS.Value = 1
THISFORM.OleBoundControl1.autoformat(bartype,1)
CASE THIS.Value = 2
THISFORM.OleBoundControl1.autoformat(coltype,1)
ENDCASE
(3) 检查框Check1的click事件:
#DEFINE C_GRAPHTITLE_LOC "菜肴销售情况表"
THISFORM.OleBoundControl1.HasTitle = !THISFORM.OleBoundControl1.HasTitle
IF THISFORM.OleBoundControl1.HasTitle = .T.
THISFORM.OleBoundControl1.ChartTitle.Caption = C_GRAPHTITLE_LOC
ENDIF
(4) 检查框Check2的click事件:
THISFORM.OleBoundControl1.HasLegend = !THISFORM.OleBoundControl1.HasLegend
(5)” 退出”命令按钮Command1的click事件:
Thisform.release
以上程序在中文WINDOWS98,VISUAL FOXPRO 6.0软件环境下运行通过。