文章转载自:慧都控件网 [http://www.evget.com/]
可以在设计时使用图表编辑器或在运行时用很少几行代码为数据库连接一个TeeChart控件。你应该使用TDBChart组件,顾名思义,这个TeeChart组件支持数据访问。TDBChart安装在Data Controls数据控制部分的Component Palette组件面板。TDBChart拥有所有TChart属性和方法,关键的区别在于,它还包括对Borland数据库引擎的访问,因此扩大了该组件项目编译的规模。因为这个原因,我们建议您使用TeeChart组件,除非你想直接连接到数据源。
TeeChart连接到包括TTable,TQuery和TClientDataset在内的所有Borland TData组件。当连接到Tables 或 Queries时,没有必要使用TDataset组件,因为TeeChart可以直接连接。
可以使用图表编辑器将任何Series连接到表或查询。每个Series可以连接到在相同或不同的数据库中的相同或不同的表或查询。
因你不受限于单一数据库或者单一的表或查询,所以这种设计将使连接到数据库的图表更具有灵活性。在设计时也可以进行数据检索,允许您在开发过程中看到实际的数据。
下面的步骤是假定您已经将一个TTable,TQuery或TClientDataset放入表单中。对于这个例子你可以将TTable连接到TeeChart Pro Database数据库,并在安装TeeChart Pro和选择Employee Table时,作为一个ODBC v3 DSN安装。
1、 在一个窗体中放置一个TDBChart控件。
2、 双击TDBChart控件显示Chart Editor图表编辑器。
3、 添加一个Series到Chart图表控件(例如Bar Series)。
4、 点击 "Series" 选项卡和 "DataSource" 选项卡。
5、 点击组合框,并选择"Dataset"。
会出现如下所示的界面:
6、 选择"Dataset..."下拉列表框显示可用数据源列表。
通过从下拉列表框选择一个项目,你可以将Series连接到指定的Table或Query。
7、 在这个例子中,我们连接Table1到“TeeChart Pro Database”和“Employee”表,如上图所示。
定义Table或Query中的检索字段,并添加到Series。这是通过为每个Series部分选择适当的字段,再由图表编辑器完成。
8、 下面的图片,是由示例所选择的Fields字段显示的Chart editor DataSource标签。
每个Series都有一个 "Label" 字段(这应该是“String”或“Char“ 类型),和一个数值字段(对于Bar Series的"Bar" 字段),它应该是整数,浮动或日期-时间字段类型。
在这个例子中,我们为Series标签选择了"Employee"表中的"LASTNAME"字段,为Bar点值选择"SALARY"数字字段。
上面图片中的DataSet组合框显示了你所创建的可用的表或查询。你总是可以在这个对话框中,选择一个不同的数据集,或者通过点击"Edit..."按钮进行编辑。
现在我们已经分配了适当的字段,来看看得到的结果。
9、 点击"Close"按钮来关闭这个Chart图表编辑器并返回到编程环境。
此时,TChart控件将试着打开选择的Datasource database Table或者Query,并将开始检索记录,并为选择的Series赋值。
在我们的示例中,您将在设计时看到以下图表:
如果您运行这个项目,图表将从Datasource数据源检索所有记录,并将值添加到Series。您将在项目运行前看到和运行时相同的图表。
10、 运行该应用程序。
你可以在TeeChart demo中的"Database Chart"节点下找到一个示例。
上述设计时的步骤可以以编程的方式通过几行代码再现。这给了你在数据库操作方面更多的自由和控制。
在一个新项目和一个新Form表单中执行上面提到的前三个步骤。
每个Series都有DataSource属性,它确定了数据库值(Table或Query)的原点,"YValues.ValueSource"和"LabelsSource"属性来指定我们所要标绘的字段。
LabelsSource和YValues.ValueSource属性的语法是:
Series1.YValues.ValueSource := "SALARY";
Series1.XLabelsSource := "LASTNAME";
Series DataSource的语法是:
Series1.DataSource := Table1;
//or
Series1.DataSource := Query1;
建议您以上述的顺序设置属性。首先设置XLabelsSource和YValues.ValueSource,然后设置DataSource属性。
如果数据库值被改变,你想“刷新”连接和再一次进行数值检索,你应该这样做:
Series1.CheckDataSource;
CheckDataSource的方法将迫使Series再次检索所有记录。
所有Series也有"XValues.ValueSource"属性。这个属性只用于XY图表(当每个点都有一个X坐标)。
如果TeeChart不能找到数据源或不能打开指定的Table或SQL查询,就将会抛出一个error。记住要设置您的Datasource数据源为'Active'。
单记录
Single Record数据图表允许从一个数据源记录中水平的进行数据检索。从TeeChart Editor Datasource下拉列表框中选择'Single Record'选项。
例如:
上面的定义采用了TeeChart的示例Stock图表的第一个记录,为Open, High, Low和Close值划分一个Series上的不同点。
通过TeeChart的数据集连接检索的数据连接可能是由创建概要所选字段的数据集中不同的字段分组的。从TeeChart Editor Datasource下拉列表框中选择'Summary'。
例如:
上述选择划分了Delphi / c++ Builder的'Orders'表的'AmountPaid'字段的Bar Series,由Customer客户编号”CustNo”进行分组。
如果数据集包含一个datetime字段你可能从第一个'Group by'下拉列表框中选择分组标准作为一个DateTimeStep。以下是使用'Saledate'进行分组的Quarter year三个月平均AmountPaid”。
例如:
代码如下:
with Series1 do
begin
DataSource:=Table1;
YValues.ValueSource:='#AVG#AmountPaid';
XLabelsSource:='#QUARTER#SaleDate';
end;
TChart的控件提供了一个事件,每次检索记录并将其添加到一个Series就会被调用。这个事件是“OnProcessRecord”,语法是:
procedure TForm1.DBChart1ProcessRecord(Sender: TCustomDBChart;
DataSet: TDataSet);
begin
//
end;
您可以使用此事件来生成一个沉默终止用以停止检索数据。例如在TeeChart demo演示"Database Chart"节点。