如何在VF环境中实现动态的柱状图显示

guhong138 2007-12-06 07:17:41
如何在VF环境中实现动态的柱状图显示:
歌手编号 票数
1 242
2 23
3 354
4 23
5 369
6 23
7 889
8 245
9 7882
10 2334
11 343
12 897
13 1000
14 2423
15 675
16 479
17 7900
18 6900
19 3545
20 8900
票数是动态变化的,怎么样才能让动态变化的过程在图行化的界面上显示出来?

急!!!
忘高手都予帮助,在此先谢谢了
...全文
352 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
guhong138 2007-12-09
  • 打赏
  • 举报
回复
好象不行啊,
不过我用数字的方式把这个做出来了
WWWWA 2007-12-07
  • 打赏
  • 举报
回复
转:
原创]采用MSGraph控件作统计图表一例
在论坛有一些狐友对VFP中用MSgraph作图的存在困惑,为了共同提高这一目的,我特写这一示例,希望对狐友有帮助。
我的示例运行的环境:WIN98,VFP6,必需装有MSGRAPH9或OFFICE2000。
我的示例中加有XP按扭控件,解压后须对其注册,否则会出错!!!
示例主要描述一些简单的图表格式控制方法,主要有:
1.怎样控制图表的数据源的使用方法。
2.怎样控制图表的标题、(X)轴即分类轴、(Y)轴即数值轴、(X)轴即系列轴及例尺的格式的使用方法。
3.怎样控制图表上翻、下翻、左翻、右翻及透视的使用方法。
4.怎样控制图表有无数据表等。
但由于时间关系没有对原码作详细注释和说明,请见谅。
例子封面:
VFPMSGRAPH示例

在VFP中实现图形统计报表

  本文介绍采用OLE技术,实现图形统计报表功能。

  VFP提供了一种称为“通用类型(General)”的字段,可以用于存储OLE对象的引用。而OLE绑定型控件则可以在表单(Form)或报表(Report)中,显示数据库表General字段对应的OLE对象的内容。在VFP的表单设计器和报表设计器中都可以使用OLE绑定型控件。


  图形统计报表的实现


  要实现图形统计报表,需要一个支持OLE的图形软件绘制图形。由于Microsoft Graph(以下简称MsGraph)支持OLE技术,并且支持的图表类型众多,因此,我们选用MsGraph进行图形的显示输出。

  MsGraph支持的图表类型主要有柱形图、条形图、折线图、饼图、XY(散点)图等等。MsGraph对各种图表类型都给出了相应的常量定义,如三维簇状柱形图(xl3DclumnClustered)、三维簇状条形图(xl3DbarClustered)、折线图(xlLine)、折线散点图(xlXYScatterLines)等等,在程序中需要确定图表类型时可方便地加以引用。

  MsGraph采用面向对象技术,对MsGraph对象提供了清晰的对象层次,用于程序中对图表的各个部分(如分类轴、数据轴、标题、图例等等)进行控制。利用MsGraph所提供的各个对象,可以通过程序对MsGraph图表对象的各个部分进行精细的控制,下面的例子列举了如何对MsGraph图表对象施加控制。

  为叙述方便,这里假设有一个需要统计的数据库表,名为Details,其中的两个字段定义如下:Date(日期型)和Value(数值型,假设为某一设备的电气参数,如绝缘电阻)。现在需要统计出该设备电气参数从某一年以来(nFirstYear)的历年变化趋势。另外定义了一个统计数据库表(名为Statistics),其中的一个字段定义为GraphRec,字段类型为General。

  将统计数据送入临时表中:

  Close Tables All

  Select Date,Value From Details Where Year(Date)>=nFirstYear;

   Order by Date Into Cursor MyTemp

  生成数据串:

  MsGraph可以根据字符串数据生成图形,但要求字符串数据具有表格型式(实际上字符串数据就是按这种格式填入MsGraph数据表中的),在本例中,字符串数据格式如下表所示:

1990 1991 … 1999
绝缘电阻(mΩ) 123456.234 654321.432 … 654321.432

  实现代码为:

  Local lcData,lcYear

  Select MyTemp

  lcYear=′′

  lcData=′绝缘电阻(MΩ)′

  Scan

lcYear=lcYear+TAB+AllTrim(Str(Year(Date)))

  lcData=lcData+TAB+AllTrim(Str(Value,16,3))

  EndScan

  lcData=lcYear+CRLF+lcData

  Use

  数据串传递给MsGraph:

  Use Statistics

  Append Blank

  Append General GraphRec Data lcData Class ″MsGraph.Chart″

  Use


  修改图形类型


  上面生成的图形类型是MsGraph的默认类型,并不总是能满足要求,因此需要软件对它加以修改。本文的例子是将MsGraph的图表类型设置为折线散点图(xlXYScatterLines),并分别设置它的分类轴(xlCategory)与数值轴(xlValue)的标题与字体大小。方法如下:

  (1) 新建表单Form1,在上面放置OLE绑定型控件,名为Ole1,设置Ole1的ControlSource属性为Statistics.GraphRec。

  (2) 在Form1.Init方法程序中添加如下代码:

  #define xlXYScatterLines 74

  #define xlCategory 1

  #define xlValue 2

  #define xlTickLabelOrientationUpward -4171

  #define xlUpward -4171

  #define xlTickLabelOrientationHorizontal -4128

  If Not Used('Statistics')

Use Statistics

  EndIf

  Select Statistics

  Scan

ThisForm.Refresh

With This.Ole1

.hasTitle=.F. &&没有标题

.hasLegend=.F. &&没有图例

.chartType=xlXYScatterLines

With .Axes(xlValue) &&设置数值轴

.hasTitle=.T.

.AxisTitle.Caption=′绝缘电阻(MΩ)′

.AxisTitle.Font.size=9

.AxisTitle.Orientation=xlUpward

.TickLabels.Font.size=9

EndWith

With .Axes(xlCategory) &&设置分类轴

.hasTitle=.T.

.AxisTitle.Caption=′年份′

.AxisTitle.Font.size=9

.TickLabels.Font.size=9

.TickLabels.Orientation=;

  xlTickLabelOrientationHorizontal

EndWith

  EndScan

  (3) 以上步骤已经完成了图形的生成与图形类型的设定,并保存在Statistics表中的GraphRec字段中。要输出图形统计报表,只需在报表(数据环境设为Statistics.Dbf)相应位置放置一个图片/OLE绑定型控件,设置它的字段属性为Statistics.GraphRec即可。

WWWWA 2007-12-07
  • 打赏
  • 举报
回复
加入MS CHART,在INIT事件中:
oconnection = CREATEOBJECT("adodb.connection")
oconnection.connectionstring = 'Provider=VFPOLEDB.1;Data Source=d:\temp;Password="";Collating Sequence=MACHINE'
oconnection.open
qq=oconnection.execute('select * from tt')
this.DataSource=qq

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧