Teechart图表应用技术详解—第七章之主明细式图表应用
Steema公司和慧都科技针对中国市场联合推出中文版TeeChart for .NET图表控件,一共汉化2000个词条(17000个单词),汉化文档35000个单词,包括控件设计时与运行时的界面汉化以及控件使用向导文档的汉化,总汉化90%以上!
TeeChart for .NET中文版让您在使用和学习上没有任何语言障碍,至少可以节省30%的开发时间。TeeChart for .NET中文版具有易上手,使用方便,稳定性好,性价比高,价格优惠等优势,并且针对Web应用提供无限制服务器分发授权方式,非常有利于产品集成。
主明细式图表应用( Master- Detail)
当需要根据主表的选择,在副表中查找与主表相关的信息时,采用主一明细方式查询是一个很好的选择,这时如果能将查询结果以图表形式表示那就更是锦上添花了。下面以一个企业备有客户的基本信息和经济往来账目,需要根据主表中某一客户的基本信息,以图表和表格的形式显示与该客户的经济往来情况为例,介绍如何实现以主一明细表方式进行图表查询显示。
实例组件属性设置
利用Delphi7自带的数据库实例演示主一明细功能的实现,用随Delphi7一起安装的BDE( Borland Database Administrator)管理员,可以看到有别名为 DBDEMOS的数据库,提供了一些演示数据,为叙述方便以DBDEMOS数据库中的客户表Customer.db和定单表Orders.db为例说明。
实例设计阶段的界面如下图所示,组件属性设置如下表所示。
组件
属性
设定值
说明
TDBChart
Name
DBChart1
图表组件
TAreaSeries
Name
Series1
序列组件名称
Datasource
Table2
序列的数据源是Table2(结果)
ParentChart
DBChart1
表示该序列属于DBChart1组件
TTable
Name
Table1
表组件名称
Datasource
DBDEMOS
数据库别名, Delphi自带数据库
TableName
Customer.db
有关客户基本信息的表
TDataSource
Name
DataSource1
为 DBNavigator1提供数据源
DataSet
Table1
TTable
Name
Table2
表组件名称
DatabaseName
DBDEMOS
数据库别名, Delphi自带数据库
TableName
Orders.db
数据库表名,有关定单信息的表
MasterSource
DataSource1
控制Table2的主源
MasterFileds
CustNo
调用Field Link Designer对话框
IndexName
CustNo
上步完成后自动填写
TDBGrid
Name
DBGrid1
用于显示主表(客户信息)
DataSource
DataSource1
TDBGrid
Name
DBGrid2
这个栅格显示明细,由主表控制,不
用设数据源 DataSource
TDBNavigator
Name
DBNavigator1
数据导航
DataSource
DataSource1
Series1
DataSource
参见摘要排序应用图3
参见下面的序列的数据源设置
TButton
Name
Nutton2
退出按钮
Caption
&E.退出
序列的数据源设置
当在图表编辑器中设置序列的数据源属性时,按下图所示进行设置。注意,序列的数据来自Table2,但实际显示时是要满足特定条件的数据才能显示, Customer.CustNo= Orders.CustNo,Table2中不满足这个条件的数据是不显示的,这就是主一明细表显示的奥妙之处。
组件Table2的属性设定
实例中Table1、Table2组件的Database和TableName属性设置按上表说明分别作为主表(客户基本信息)和副表(定单信息)进行设置。Table2组件的MasterSource和MasterFields属性设置是关键。单击对象观察窗口,按下列步骤设置:
- 选择MasterSource属性,设定为DataSource1,说明Tabe2使用的数据受主源MasterSource: DataSource1控制。
- 选择 MasterFields属性,单击右边的二按钮,显示Fields Link Designer对话框,如下图所示。
当利用该对话框建立了主一明细表之间的关联之后,随着主表记录指针的移动,图表组件显示的内容会随之发生变化。
编写代码
- 为使图表组件显示的内容随主表记录指针的移动而变化,只需在Grid1组件的OnCellclick事件中加入一句代码:
DBChart1.RefreshData;使得主表记录指针移动时不断刷新 DACha的数据,从而实现图表显示的内容不断地更新。
- 由于初始状态数据库表 Table1、Table2均处于关闭状态,在程序运行中才打开,所以在 CheckBox1的OnClick事件中加入下列代码即可在程序启动后自动打开数据库表:
Table1.Active:=CheckBox1.Checked; Table2.Active:=CheckBox1.Checked;这个例子使用了短短的几行代码就实现了非常强大的功能,实例的运行效果如下图所示。
相关资料推荐:
上一章:摘要排序应用
下一章:交叉表图表应用
=====================================
现TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在线订购,现在抢购可立享优惠!
关注慧聚IT微信公众号???,了解产品的最新动态及最新资讯。