C++Builder Tchart与TDBchart

来源:互联网 发布:快递入库软件app 编辑:程序博客网 时间:2024/05/16 02:12

    最近接触得比较多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;

            

   

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 生源地助学贷款登录密码忘了怎么办 助学贷款支付宝密码忘了怎么办 微信密码忘记了手机号也换了怎么办 换手机号了微信密码忘记了怎么办 qq密码忘记了手机号也换了怎么办 一年只能修改一次昵称我能怎么办 华为手机的账号和密码丢失怎么办 华为手机的账号和密码丢失了怎么办 手机号被别人注册了微博怎么办 微博账号一天内多次解冻怎么办 露娜注册时邮箱填错了怎么办 苹果4s手机显示已停用怎么办 新买的微博小号太多内容了怎么办 向海关申报价格低于实际价格怎么办 百度云下载内容包含违规信息怎么办 跨境汇款错了不能退款怎么办 公司欠钱没有还被起诉了。怎么办 战网的姓名不是身份证名字怎么办 手机号码被别人注册了微信怎么办 手机号码被别人注册过微信怎么办 手机号码换了微信密码忘了怎么办 手机号码停了微信密码忘了怎么办 微信好友发的视频删了怎么办 随机生成的微信号搜索不到怎么办 支付宝账户登录密码忘记了怎么办 淘宝支付宝登录密码忘记了怎么办 生源地贷款支付宝账号忘了怎么办 手机号丢了微信找不到密码怎么办 支付宝知道名字不知道姓怎么办 东西丢了从监控里找到怎么办 两人合影其中一人去世怎么办 税务登记证注销但是发票丢失怎么办 发票登报挂失后到国税还要怎么办 广州个体执照没办国税地税怎么办 身份信息被冒用注册了公司怎么办 二级建造师注册有效期过了怎么办 公司变更法人新刻法人章怎么办 个体户年报第一年忘了报怎么办 别人说娃名字起大了怎么办? 综英美我能怎么办我也很绝望 两个人不合适且结了婚怎么办