C++Builder Tchart与TDBchart

    最近接触得比较多C++Builder的Tchart和TDBchart这两个控件,也在网上搜索了很多资料,我就整理一下把常用的分享一下。

    一、显示数据柱数据图表DBChart对象用于在报表中插入图表。双击数据图表对象,可以调出图表编辑器:

    (1)Series类型:(a)Format页(数据柱的风格)在Color Each中打勾,就可使用多种颜色显示,color按钮用于设置颜色,Style用于设置图表的风格(Rectangle长方体,Pyramid三角体,Invert.PyramId倒三角体,Cylinder圆柱体,Ellipse圆形,Arrow箭头,Rect.Gradient立体长方体[推荐]Cone不显示),Border按钮设置数据柱的边线属性,Pattern按钮设置数据柱的显示类型,Bar Width设置数据柱间的距离,Bar Offset设置数据柱与纵刻度的距离,(b)General页(数据柱的一般设置)Show in Legend选项是否显示右上角的数据说明,Horizontal Axis设置横刻度的位置,Vertical Axis设置纵刻度的位置,Formats设置数据柱的格式,(c)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设置标记的边线;(d)Data Source页:(数据连接)要连接图表到数据字段,通过SQL语句查询,取得两个字段的数据(如:品种名,吨数(各品种的合计数))。

    (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 Value0开始);Dividing Lines设置说明中是否显示分格线;Shadow设置说明的背景属性。

    (7)Walls页(设置刻度的其它属性)。

    二、使用方法 

   静态使用:

   1. 添加控件:TeeChart std中选择TDBChart

   2.右键选择EditChart...

   3.Chart选项卡Series子页面中点击ADD按钮添加Series

   4.切换到Series选项卡的DataSource子页面,从下拉菜单中选择DataSet

   5.然后从dataset下拉框中选择用作数据源的adoquery

   6.然后为adoquery建立连接,输入查询语句,激活获取数据,

   7.好了曲线图画出来了,如果只想要2d的曲线则选择Chart选项卡的3D子页面,将3D Dimension的勾选去掉即可;

   动态调用:

   TADOQuery *ado = new TADOQuery(NULL);
   ado->conn;
   ado->SQL->Clear();
   ado->SQL->Text = "select * from "+IntToStr(id);

   cht->Title->Text->SetText("
曲线图")  ;  //chtTDBChart控件,为控件设置标题
   cht->Series[0]->DataSource = ado;   //
设置数据源
   cht->Series[0]->ValueFormat=  "#.#"; //
设置数据格式
   cht->Series[0]->XLabelsSource ="id";  //
绑定x轴与数据源的字段“id”
   cht->Series[0]->XValues->Name = "
时间";  //设置x轴名称

   cht->Series[0]->XValues->ValueSource = "id";//
绑定x轴数据与数据源的字段“id”
   cht->Series[0]->YValues->Name = "
";//设置y轴名称

   cht->Series[0]->YValues->ValueSource = "zhi";  //
绑定y轴数据与数据源的字段“zhi”
   cht->Series[0]->ShowInLegend = false;  //
设置不显示图例,只显示曲线图

   ado->Open();

三、使用技巧

    1、 TChart中如何实现只有Y轴的放大与缩小功能?

    设置BottomAxis或者LeftAxisAutomatic:=false并同时设置Minimum,Maximum属性

    2、 如何固定TChart中的坐标,不使TChart中的坐标跟随Series的变化而变化?

//设置底座标

with myChart.BottomAxis do

begin

    Automatic:=false;

    Minimum:=0;

    LabelStyle := talText;

end;

//设置左坐标

with myChart.LeftAxis do

begin

    Automatic:=false;

    Minimum:=0;

    Title.Angle:=270;

    Title.Font:=Self.Font;

    Title.Font.Charset:=ANSI_CHARSET;

    Title.Font.Name:='@宋体';

    Grid.Visible := False;

end;

//设置右坐标

with myChart.RightAxis do

begin

    Automatic:=false;

    Title.Font:=Self.Font;

    Title.Font.Charset:=ANSI_CHARSET;

    Title.Font.Name:='@宋体';

    Title.Caption:='累计百分比(%';

    Maximum:=100;

    Minimum:=0;

end;

3、  如何删除一个图形中的一个点?

使用Seriesdelete 方法

4   、 如何修改一个点的X或者Y 值?

LineSeries1.YValue[3] := 27.1 ;

{In Bubble Series}

BubbleSeries1.RadiusValues.Value[ 8 ] := 8.1 ;

{In Pie Series}

PieSeries1.PieValues.Value[ 3 ] := 111 ;

                       5 、如果横坐标是时间(日期),如何进行设置?

{First, you need to set the DateTime property to True in the desired X and/or Y values list.}

LineSeries1.XValues.DateTime := True ;

{Second, use the same above described methods, but give the values as Date, Time or DateTime values}

LineSeries1.AddXY( EncodeDate( 1996 , 1 , 23 ) , 25.4 , 'Barcelona' , clGreen );

           6、如何在chart中画出的曲线某个点上标记出该点的值?

Series.Marks.Visible:=true;

Series.Marks.Style:=smsValue;

7、  如何设置横轴或者纵轴的增长率?

Chart.BottomAxis.Increment := DataTimeStep[ dtOneHour ] ;

Chart.RightAxis.Increment := 1000;

            

   

你可能感兴趣的:(delete,border,dataset,alignment,C++Builder,methods)