Teechart图表应用技术详解—第七章之交叉表图表应用
Steema公司和慧都科技针对中国市场联合推出中文版TeeChart for .NET图表控件,一共汉化2000个词条(17000个单词),汉化文档35000个单词,包括控件设计时与运行时的界面汉化以及控件使用向导文档的汉化,总汉化90%以上!
TeeChart for .NET中文版让您在使用和学习上没有任何语言障碍,至少可以节省30%的开发时间。TeeChart for .NET中文版具有易上手,使用方便,稳定性好,性价比高,价格优惠等优势,并且针对Web应用提供无限制服务器分发授权方式,非常有利于产品集成。
交叉表图表应用(Cross Tab Charts)
所谓交叉式图表是指在程序运行中可以对一个数据库表中的两个字段的值进行分组求和或计数,利用该功能使得图表的显示动态交叉进行。这里仍以Delphi7自带的数据库DBDEMOS的定单表Orders.db为例说明。
实例组件属性设置
实例设计阶段的界面如下图所示,组件属性设置如下表所示。在这个例子中有两个最关键问题:一是如何设置交叉源;二是如何在系统运行中动态切换分组。前者可在程序设计阶段实现,也可在程序运行阶段实现。在设计阶段可以通过图表编辑器在Series选项卡的DataSourc选项卡中手动设置,也可在对象观察窗口Object Inspector中实现。
交叉式图表演示有关属性
组件 | 属性 | 设定值 | 说明 |
TDBChart |
Name |
DBChart1 |
图表组件 |
TBarSeries |
Name |
Series1 |
|
Datasource | DBCrossTabSource1 | 序列的数据源是由组件DBCrossTabSource提供 | |
ParentChart | DBChart1 | 表示该序列属于DBChart1组件 | |
TTable | Name |
Table1 |
数据库别名,Delphi自带数据库 |
DatabaseaName | DBDEMOS | ||
TableName | Orders.db | 有关定单信息的表 | |
TDataSource | Name | DataSource1 |
为DBNavigator提供数据源 为DBGrid提供数据源 |
DataSet | Table1 | ||
TDBGrid | Name | DBGrid1 | 用于显示定单信息 |
DataSource |
DataSource1 |
||
TDBNavigator | Name | DBNavigator1 | 数据导航 |
DataSource | DataSource1 | ||
Series1 |
DataSource |
参看下图 |
参看在图表编辑器中设置 |
TDBCrossTableSource |
Name |
DBCrossTableSource1 |
|
DataSet |
Table1 |
交叉源 | |
Formula |
gfSum |
计算公式 | |
GroupField | Terms | 分组字段 | |
LabelField | ShipVIA | 序列显示时横轴标签 | |
ValueField | AmountPaid | 计算使用字段 | |
Series |
Series1 |
显示计算结果的序列 | |
Active | false | 交叉源初始状态为关闭 | |
TRadioGroup |
Name |
RadioGroup |
计算选择(计数、求和) |
Item | 计数,求和 | ||
ItemIndex |
1 | ||
TCheckBox |
Name |
CheckBox1 |
打开数据库 |
Checked |
false |
||
TButton |
Name |
Nutton1 |
退出按钮 |
Caption |
&E.退出 |
在图表编辑器中设置
在程序设计阶段,双击图表组件DBChart1打开图表编辑器,然后选择Series选项卡中的DataSource选项卡,按如下图所示进行设置。在这里,当选择组合框的CrossTab之后,就需要设置使用的数据集、计算种类(求和、计数)、计算字段、分组字段和标签字段以及是否大小写敏感、是否打开表等。
在对象观察窗口设置
实际中,当在图表编辑器中选择CrossTab之后,系统就自动在窗口放置了TDBCrossTabSource组件。在选中该组件后,在对象观察窗口就可看到需要设置的一些属性了如下图所示。在这里要注意领会计算字段、分组字段、标签字段以及计算公式等属性的含义。可以看出,有了TDBCrossTabSource组件后,不仅可以使用户在设计阶段改变分组、计算、标签字段的选择,更为在程序运行中动态地改变分组、计算、标签字段和计算公式提供了方便。
编写代码
在CheckBox1组件的OnClick事件中根据选择确定DBCrossTabSource1的打开与关闭,且处于关闭状态时计算公式选择框和交换按钮Button是不可用的,代码如下:
procedure TForml.CheckBox1Click(Sender: TObject); begin DBCrossTabSource1.Active:=CheckBox1, Checked; RadioGroup1.Enabled:=CheckBox1.Checked; Button2.Enabled:=CheckBox1.Checked; end;
在RadioGroup1组件的OnClick事件中根据选择确定分组计算公式,在公式改变后立即激活组件起到刷新数据的效果:
procedure TForm1.RadioGroup1Click(Sender:TObject); begin case RadioGroup1.ItemIndex of 0:DBCrossTabSource1.Formula:=gfCount; 1:DBCrossTabSource1.Formula:=gfSum; end; DBCrossTabSource1.ValueField:='AmountPaid'; DBCrOssTabSource1.Active:=TRUE;
在Button按钮的OnClick事件中加入下列代码,用于实时切换分组方式。由于采用按钮进行切换,所以需要设置一个逻辑变量进行区分,代码如下:
procedure TForm1.Button2Click( Sender:Tobject); begin if not bswap then begin DBCrossTabSource1.GroupField:='Terms'; DBCrossTabSource1.LabelField:='ShipVIA'; bswap:=not bswap; end else begin DBCrossTabSource1.GroupField:='ShipVIA'; DBCrossTabSource1.Labeleield:='Terms'; bswap not bswap; end; DBCrossTabSource1.ValueField :='AmountPaid'; DBCrossTabSource1.Active:=TRUE; end;
本例运行阶段的界面如图1所示,图2是求和计算分组字段交换后的效果图。
图1:
图2:
相关资料推荐:
上一章:主明细式图表应用
=====================================
现TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在线订购,现在抢购可立享优惠!
关注慧聚IT微信公众号???,了解产品的最新动态及最新资讯。