您的位置:首页 > 移动开发

数据图表DBChart的使用

2007-12-25 14:46 711 查看
一、显示数据柱

数据图表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;   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息