delphi 图表控件使用

 

最近开发要使 用图表,Delphi里提供了图表开发的控件TChart,可惜帮助里没有DEMO代码,上网搜索了一下,竟然发现文章也少的可怜。没办法,自己丰衣足 食,写代码试用,看帮助,读代码,搞了半天大概弄明白了TChart的使用方式,下面写一下几个常见问题的解决。1.如何写一个TChart的Hello World?放一个控件到窗体上,然后写代码加入一个折线数据序列:
var

Series: TLineSeries;

begin

Series := TLineSeries.Create(Chart1);

Series.Add(100, 'aaa', clRed);

Series.Add(200, 'AAA', clGreen);

Chart1.AddSeries(Series);

end;

这样就会生成一个简单的折线图表,要生成其它类型的数据图表,可以添加不同的数据序列(各种图表的序列类型可以参考帮助文档)。2.如何设置图表的标题?TChart组件提供了Title属性可以这是图表的标题,包括标题的内容、字体、对齐方式等都可以通过Title属性设置。最简单的设置方式:Chart1.Title.Text.Text := '图表的标题';3.如何修改图表的背景颜色和整个图表的颜色?TChart是一个窗体控件,可以通过修改Color属性设置图表颜色,这是一种最简单的方式:Chart1.Color := clWhite;修改图表部分的背景色可以通过BackColor属性来实现:Chart1.BackColor := clGreen;此外,TChart还提供了渐变的背景支持,通过Gradient控制:Chart1.Gradient.Visible := True;

Chart1.Gradient.Direction := gdFromTopLeft;

Chart1.Gradient.StartColor := clGreen;

Chart1.Gradient.EndColor := clYellow;4.TChart的3D效果如何控制?TChart提供了View3D属性,控制是否使用3D效果,View3dWalls属性控制是否显示左侧的3D墙效果5.如何不显示图表控件生成图表?很遗憾,TChart是一个Windows窗体控件,必须依附一个窗体或Windows控件才能使用。如果要不显示TChart的话,可以将TChart的Visible属性设为False来使用。下面的例子创建了一个隐藏的TChart来生成图表:var

Chart: TChart;

S: TChartSeries;

Tmpfile&: string;

begin

Chart := TChart.Create(nil);

try

    Chart.Parent := Application.MainForm;

    Chart.Visible := False;    Chart.Title.Text.Text := '测试图表';    S := TBarSeries.Create(Chart);    Chart.AddSeries(S);    S.Title := '嘿嘿';

    S.AddXY(1, 56, '一月', clGreen);

    S.AddXY(2, 67, '二月', clYellow);

    S.AddXY(3, 34, '三月', clBlue);

    S.AddXY(4, 78, '四月', clRed);    Chart.View3D := False;

    Chart.BackColor := clWhite;

    Chart.Gradient.StartColor := clWhite;

    Chart.Gradient.EndColor := clWhite;

    Chart.Gradient.Visible := True;    TmpFile := Application.ExeName + '.bmp';    Chart.SaveToBitmapFile(TmpFile);    Image1.Picture.LoadFromFile(TmpFile);

finally

    Chart.Free;

end;

end;

 

分析报告1.1      [概述]   TChart是delphi里面一个标准的图形显示控件。它可以静态设计(at design time)也可以动态生成。

1.2      [继承关系]    Tobject

TPersistent

TComponent

TControl

TCustomControl

TWedgetControl

TChart

TCustomPanel

1.3      [tips]1.3.1            Pro Version支持Bezier , Contour , Radar 和 point3D 曲线1.3.2            支持jpeg文件的导出1.3.3            Chart中的Series 可以连接到Table , Query , RemoteDataset(其他数据集)1.3.4            TChart里的series的active属性可以实现对已绘制图形的显示或者隐藏1.3.5            在TChart中, tchartSeries是所有具体series的父类,没有画出什么来的,用一个具体的series类来创建就可以了,比如用TLineSeries、TPieSeries、 TPointSeries、 TPointSeries等等都行1.3.6            TTeeFunction Component可以实现在同一个TChart里面,一个Serries对另一个Serries的统计

1.4      [问题极其使用技巧]1.4.1            TChart中如何实现只有Y轴的放大与缩小功能?设置BottomAxis或者LeftAxis的Automatic:=false并同时设置Minimum,Maximum属性

1.4.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;

1.4.3            如何删除一个图形中的一个点?使用Series的delete 方法

1.4.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 ;

1.4.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 );

1.4.6            如何在chart中画出的曲线某个点上标记出该点的值?Series.Marks.Visible:=true;

Series.Marks.Style:=smsValue;

1.4.7            如何设置横轴或者纵轴的增长率?Chart.BottomAxis.Increment := DataTimeStep[ dtOneHour ] ;

Chart.RightAxis.Increment := 1000;

1.4.8            如何对图象进行缩放?TChart的ZoomRect或者ZoomPercent方法 (Pie图可能不支持缩放)

1.5      [TChart可以绘制的图形]1.5.1            Line ( TLineSeries)

1.5.2            FastLine (TFastLineSeries) 相对Line来说,它损耗了某些属性从而来实现快速绘制1.5.3            Bar (TBarSeries)

1.5.4            Horizontal bar (THorizBarSeries)

1.5.5            Area (TAreaSeries)

1.5.6            Point (TPointSeries)

1.5.7            Pie (TPieSeries)

1.5.8            Arrow (TArrowSeries)

1.5.9            Bubble (TBubbleSeries)

1.5.10         Gantt (TGanttSeries)

1.5.11         Sharp (TChartShape)

1.6      [TChart的实时绘制] 实时绘制对机器性能要求比较高,因此我们在编程的时候要注意下面几个方面:

ü         使用2D图形

ü         是Chart尽可能包含少的点

ü         如果需要,可以移除(remove)chart的legend(?????)和Title

ü         使用默认的字体和字体大小

ü         使用FastLineSeries

ü         使用实体(solid)画笔和画刷格式

ü         尽量避免使用圆形和环行bar样式

ü         不要使用背景图片和渐变效果样式

ü         把Chart的BevelInner和BevelOUter属性设置为bcNone

ü         如果需要,把TChart的AxisVisible属性设置为False

ü         把BufferedDisplay设置为false可以加速chart的重绘

1.7      [Scrolling]   TChart有4中scroll选择(AllowPanning属性),分别是 不允许Scroll ( pmNone) ; 水平Scroll (pmHorizontal) ; 垂直Scroll (pmVertical) ; 水平和垂直Scroll (pmBoth)

Procedure Scroll(Const Offset:Double; CheckLimits:Boolean);

例子如下:

Chart1.BottomAxis.Scroll( 1000, True );这段代码也等同于

With Chart1.BottomAxis do

Begin

Automatic:=false;

SetMinMax( Minimum+1000, Maximum+1000 );

    End;

1.8      [TChart中的全局变量]ü         TeeScrollMouseButton := mbRight;设置鼠标右键为TChart滚动键(默认)

ü         TeeScrollKeyShift    := [ ssCtrl ]; 要按住Control键才可以使Scroll滚动

1.9      [TChartSerries使用技巧]

1.9.1            运行时候创建一个Serries, 三种方法:1.Var MySeries : TBarSeries ;

MySeries := TBarSeries.Create( Self );

MySeries.ParentChart := Chart1 ;

2.Chart1.AddSeries( TBarSeries.Create( Self ) );

3.Var MyClass : TChartSeriesClass;

MyClass := TBarSeries ;

Chart1.AddSeries( MyClass.Create( Self ) );

1.9.2            获得TChart中的Serries数组,也有三种方法1.MySeries := Chart1.SeriesList [ 0 ]

2.MySeries := Chart1.Series [ 0 ]

3.MySeries := Chart1 [ 0 ]

1.9.3            SerriesCount属性获得SeriesList中Series的个数1.9.4            隐藏TChart中的Series有三种方法,但是效果不等价1. Series1.Active:=False; 仅仅隐藏,当设置为true的时候还可以显示出来

2. Series1.ParentChart:=nil ; 隐藏,重新设置ParentChart为TChart时候可以显示

3. Series1.Free; 删除了Series. 不可以恢复

1.9.5            TChart中的数据排序    With Series1 do

begin

    YValues.Order:=loAscending;

    YValues.Sort;

    Repaint;

end;

Ø         定位一个点(Loacate a point)

Series1.XValues.Locate(123);

Ø         XValue和YValue都拥有的属性Total , TotalABS , MaxValue , MinValue

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库报表设计系统(以下简称为报表系统),是专用于对访问远程数据库服务器所得的数据,如:SQL Server2000、Oracle等进行报表设计、预览和打印的系统。它设计自由、样式多样、操作简单,和通常的字处理排版类似。 报表系统主要包括系统菜单、工具栏、设计区和预览区四大部分。其中系统菜单中的主要功能都能在工具栏中实现,工具栏以包括系统工具、表头元件、数据元件、排版工具、位置调整工具,具体功能如下: 1)系统工具:主要有新建报表、打开报表、保存报表、打印设置、打印预览、剪切、复制、粘帖等; 2)表头元件:主要有标签、文本标签(用于多行标签)、系统数据(用于显示打印日期、页码、页数等)、图象、直线、矩形(用于制作表格)和条形码等工具。 3)数据元件:主要有数据标签(用于显示数据字段值)、数据文本(用于显示TXT数据)、数据RTF(用于显示RTF数据)、求和(用于对字段求和)、图象(用于显示图象字段)、数据条形码、区域框(用于制作表格)以及数据字段框(用于选择要显示的数据字段名称)。 4)排版工具:主要有对文字进行加粗、斜体、下画线、居左、居中、居右,改变字体及大小、颜色,置前、置后工具用于对重合的元件进行调整。 5)位置调整工具:主要有上下左右移动元件,对元件上下左右对齐(同时选择多个元件就可使用此工具选择对齐方式)和改变元件大小工具,即选择两个以上的元件,使用此工具对基于参照元件进行放大和缩小其它元件。 设计区主要用于报表版面设计,包括表头(用于设计报表标题)、内容(用于设计报表表格)、页脚(用于设计报表落款);预览区主要用于报表预览,即可进行实时预览,也就是在设计区中修改了报表,立刻就可以在预览区显示效果,预览区上还有打印按钮、预览比例按钮和翻页按钮等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值