一、显示数据柱
数据图表DBChart对象用于在报表中插入图表。双击数据图表对象,可以调出图表编辑器:
Chart选项:
(1)Series类型页
可以选择十一种类型的图表以及下列选项,按Add就可以选择图表的类型(3D :显示3维图表);按Title..就可以修改图表的名称。
(2)General页(图表的普通设置)
其中'Print Preview'按钮是用于打印图表。'Zoom'为缩放设置。'Margins(%)'是设置整个图表的位置。
(3)Axis页(轴的相关设置)
'Title'页用于设置竖轴的相关属性,Title设置要显示的竖轴的名称
'Labels'页中的'Font'按钮用于设置左边刻度的字体大小,Size用于设置各轴的距离,Angle用于设置刻度的宽度,Min.Separation%用于设置刻度的比例。Valuse Format用于设置格式(一般不用改)
'Position'页用于位置的设置,Position%是设置刻度位置,Start是设置刻度高度,
(4)Titles页(图表标题的设置)
'Font'按钮用于设置字体大小,Back Color设置颜色,Alignment用于设置标题的位置。
(5)Legend页(右上角说明的设置)
Visible选项是否显示说明;Back Color设置说明背景的颜色;Font设置说明的字体大小;Frame设置说明的边线;Resize Chart选项用于设置是否让图表覆盖说明;Inverted选项用于设置从左或从右显示字段颜色;Position选项用于设置说明在图表组件中的显示的位置;Margin设置图表的大小;Legend Style设置说明的风格;Text Style设置说明的内容(Plain字段内容、Left Value值+字段、Right Value字段+值、Left Percent百分率+字段、Right Percent字段+百分率、X Value从0开始);Dividing Lines设置说明中是否显示分格线;Shadow设置说明的背景属性;
(6)Panel页(面板的设置)
Bevel Inner、Bevel Outer设置图表边框属性;Width设置高度;Back Image设置是否在图表组件上显示图像;Panel Color设置面板的颜色;Gradiend用于设置在面板中显示特效颜色(Direction用于设置特效位置);
(7)Walls页(设置刻度的其它属性)
(8)3D页(3D效果的设置)
Series选项:
(1)Format页(数据柱的风格)
在Color Each中打勾,就可使用多种颜色显示,color按钮用于设置颜色,Style用于设置图表的风格(Rectangle长方体,Pyramid三角体,Invert.PyramId倒三角体,Cylinder圆柱体,Ellipse圆形,Arrow箭头,Rect.Gradient立体长方体[推荐],Cone不显示),Border按钮设置数据柱的边线属性,Pattern按钮设置数据柱的显示类型,Bar Width设置数据柱间的距离,Bar Offset设置数据柱与纵刻度的距离,
(2)General页(数据柱的一般设置)
Show in Legend选项是否显示右上角的数据说明,Horizontal Axis设置横刻度的位置,Vertical Axis设置纵刻度的位置,Formats设置数据柱的格式,
(3)Marks页(标记,数据内容显示设置)
数据内容显示设置:在Style中选相关的选项,标记的类型:Value值、Percent百分率、Label字段内容、Label and Percet字段内容+百分率、Label and Value字段内容+值、Legend与右上角的数据说明一样、Percent Total百分率+值、Label&Percent Total字段内容+百分率+值。
Visible选项是否显示标记;Transparent选项是否显示标记的颜色;Clipped选项是否让标记超过刻度;Arrows用于设置标记下垂线的属性。
Back Color设置标记的颜色;Font设置标记的字体大小;Border设置标记的边线;
(4)Data Source页:(数据连接)
要连接图表到数据字段,通过SQL语句查询,取得两个字段的数据(如:品种名,吨数(各品种的合计数))。
例:{ADOQuery1组件的SQL语句}
select a.kindName,sum((0.01*0.001)*(b.MZ-b.PZ)) as KZ form KindInfo a inner join Weighinfo b on a.kindName=b.kName1 Group by a.kindName
这些数据字段的内容将用于设置图表的变量和图例。图例通常显示在X轴上,变量在图表的Y轴上。当生成报表时,选择的Text对象的内容将保存到图表对象的备注中。双击DBChart对象,在Editing DBChart对话框下的'Series'页进行设置,在下拉列表框中选择Series对象,在Data Source页的下拉框中选择'DataSet',再在dataset中选对应的查询组件(ADOQuery1),在Labels中选择'品种'字段对应的字段名,再在Bar中选择'吨数'字段对应的字段名,注意X轴项不用写。
X轴不能选择字符型字段。冥思苦想不得其法。后来硬着头皮看英文帮助,终于有所收获。
dbchart1.Series[0].XLabelsSource:='mc';
-------------
Series[0]代表我的一个图表,mc代表我的一个字符型字段。在打开dbchart1.Series[0]所对应的AdoQuery后,用上面这个语句,就可以实现在Dbchart中显示字符型字段。
别看就一条语句。你要是不知道就是没办法。
例:在程序中设置:
begin
with DBChart1 do
begin
with Series[0} do
begin
DataSource:=ADOQuery1;
XValuse.ValueSource:='字段';
YValuse.ValueSource:='字段';
end;
end;
end;
procedure TForm10.Button1Click(Sender: TObject);
begin
datam.SQ_WeiFaTongJi.SQL.Text:='select R.PHOTO,count(R.PHOTO) cross from table R group by R.PHOTO';
datam.SQ_WeiFaTongJi.Open;
dbchart1.Series[0].DataSource:=datam.Data_WeiFaTongJi.DataSet;
dbchart1.Series[0].XLabelsSource:='photo';
dbchart1.Series[0].YValues.ValueSource := 'cross';
dbchart1.Series[0].Active:=true ;
end;
procedure TForm10.Button2Click(Sender: TObject);
begin
datam.SQ_WeiFaTongJi.SQL.Text:='select R.weizhang,count(R.weizhang) yi from table R group by R.weizhang';
datam.SQ_WeiFaTongJi.Open;
dbchart1.Series[0].DataSource:=datam.Data_WeiFaTongJi.DataSet;
dbchart1.Series[0].XLabelsSource:='weizhang';
dbchart1.Series[0].YValues.ValueSource := 'yi';
dbchart1.Series[0].Active:=true ;
end;
======成功=============
procedure TForm10.Button1Click(Sender: TObject);
var
Series1: TLineSeries;
begin
Series1 := TLineSeries.Create(Application) ;
DbChart1.SeriesList.Clear ;
DbChart1.AddSeries(Series1);
datam.SQ_WeiFaTongJi.close;
datam.SQ_WeiFaTongJi.SQL.Text:='select R.PHOTO,count(R.PHOTO) cross from table R group by R.PHOTO';
datam.SQ_WeiFaTongJi.Open;
dbchart1.Series[0].DataSource:=datam.Data_WeiFaTongJi.DataSet;
dbchart1.Series[0].XLabelsSource:='photo';
dbchart1.Series[0].YValues.ValueSource := 'cross';
dbchart1.Series[0].Active:=true ;
end;
procedure TForm10.Button2Click(Sender: TObject);
var
Series1: TLineSeries;
begin
Series1 := TLineSeries.Create(Application) ;
DbChart1.SeriesList.Clear ;
DbChart1.AddSeries(Series1); datam.SQ_WeiFaTongJi.close;
datam.SQ_WeiFaTongJi.SQL.Text:='select R.weizhang,count(R.weizhang) yi from table R group by R.weizhang';
datam.SQ_WeiFaTongJi.Open;
dbchart1.Series[0].DataSource:=datam.Data_WeiFaTongJi.DataSet;
dbchart1.Series[0].XLabelsSource:='weizhang';
dbchart1.Series[0].YValues.ValueSource := 'yi';
dbchart1.Series[0].Active:=true ;
end;