TChart用法(网络收集二)
2009-03-29 09:40
393 查看
TChart使用经验小结
1、问题:通过Addxy方法给TChart添加标记(Mark)时,发现在TChart的横坐标会随着Mark而变化,后来发现通过以下方法可避免这种情况:双击TChart,点击Axis-> top or bottom ->labels,在styles中将labels的形式改为Value即可!
2、几个有用的属性:
图表上的每个点都是有索引的,就象一个数组一样,在OnClickSeries事件中有个ValueIndex属性,该属性可以得到鼠标所点击的点的索引值(必须将Series的Point设置为可见,鼠标点击到那个点时才可以触发该事件)。
xValue[index]、yValue[index]分别表示图表的索引为index的横纵坐标值,用这两个属性可以读取和设置索引为index的点的值,注意:不要用xValues和yValues,这两个属性也可以达到同样的目的,但是速度非常的慢。因为后两个在进行操作的时候可能要遍历整个图表上的值(个人观点)
在MouseDown,MouseMove,Mouseup中,可以利用xScreentoValue(x),yScreentoValue(y)得到鼠标当时所在点对应在图表上的横纵坐标值。
e.g......
private
Nowindex:Integer;
Cantuo:boolean;
........
procedure TfrmMain.Chart1ClickSeries(Sender: TCustomChart;
Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
NowIndex:=ValueIndex;
end;
procedure TfrmMain.Chart1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Cantuo:=true;
end;
procedure TfrmMain.Chart1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Cantuo:=false;
end;
procedure TfrmMain.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Cantuo then
begin
Series1.yValue[NowIndex]:= Series1.yScreenToValue(y) ;
end;
end;
这里即实现了可以在图表中拖动某一个点使其在纵轴上变化位置
Tchart分析报告
[align=left]1 Tchart分析报告[/align]
[align=left]1.1 [概述][/align]
[align=left] TChart是delphi里面一个标准的图形显示控件。它可以静态设计(at design time)也可以动态生成。[/align]
[align=left]1.2 [继承关系] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left]1.3 [tips][/align]
[align=left]1.3.1 Pro Version支持Bezier , Contour , Radar 和 point3D 曲线[/align]
[align=left]1.3.2支持jpeg文件的导出[/align]
[align=left]1.3.3 Chart中的Series 可以连接到Table , Query , RemoteDataset(其他数据集)[/align]
[align=left]1.3.4 TChart里的series的active属性可以实现对已绘制图形的显示或者隐藏[/align]
[align=left]1.3.5在TChart中, tchartSeries是所有具体series的父类,没有画出什么来的,用一个具体的series类来创建就可以了,比如用TLineSeries、TPieSeries、 TPointSeries、 TPointSeries等等都行[/align]
[align=left]1.3.6 TTeeFunction Component可以实现在同一个TChart里面,一个Serries对另一个Serries的统计[/align]
[align=left] [/align]
[align=left]1.4 [问题极其使用技巧][/align]
[align=left]1.4.1 TChart中如何实现只有Y轴的放大与缩小功能?[/align]
[align=left]设置BottomAxis或者LeftAxis的Automatic:=false并同时设置Minimum,Maximum属性[/align]
[align=left]1.4.2如何固定TChart中的坐标,不使TChart中的坐标跟随Series的变化而变化?[/align]
[align=left]//设置底座标[/align]
[align=left] with myChart.BottomAxis do[/align]
[align=left] begin[/align]
[align=left] Automatic:=false;[/align]
[align=left] Minimum:=0;[/align]
[align=left] LabelStyle := talText;[/align]
[align=left] end;[/align]
[align=left] //设置左坐标[/align]
[align=left] with myChart.LeftAxis do[/align]
[align=left] begin[/align]
[align=left] Automatic:=false;[/align]
[align=left] Minimum:=0;[/align]
[align=left] Title.Angle:=270;[/align]
[align=left] Title.Font:=Self.Font;[/align]
[align=left] Title.Font.Charset:=ANSI_CHARSET;[/align]
[align=left] Title.Font.Name:='@宋体';[/align]
[align=left] Grid.Visible := False;[/align]
[align=left] end;[/align]
[align=left] //设置右坐标[/align]
[align=left] with myChart.RightAxis do[/align]
[align=left] begin[/align]
[align=left] Automatic:=false;[/align]
[align=left] Title.Font:=Self.Font;[/align]
[align=left] Title.Font.Charset:=ANSI_CHARSET;[/align]
[align=left] Title.Font.Name:='@宋体';[/align]
[align=left] Title.Caption:='累计百分比(%)';[/align]
[align=left] Maximum:=100;[/align]
[align=left] Minimum:=0;[/align]
[align=left] end;[/align]
[align=left]1.4.3如何删除一个图形中的一个点?[/align]
[align=left]使用Series的delete 方法[/align]
[align=left]1.4.4如何修改一个点的X或者Y 值?[/align]
[align=left]LineSeries1.YValue[3] := 27.1 ;[/align]
[align=left]{In Bubble Series}[/align]
[align=left]BubbleSeries1.RadiusValues.Value[ 8 ] := 8.1 ;[/align]
[align=left]{In Pie Series}[/align]
[align=left]PieSeries1.PieValues.Value[ 3 ] := 111 ;[/align]
[align=left]1.4.5如果横坐标是时间(日期),如何进行设置?[/align]
[align=left]{First, you need to set the DateTime property to True in the desired X and/or Y values list.}[/align]
[align=left]LineSeries1.XValues.DateTime := True ;[/align]
[align=left]{Second, use the same above described methods, but give the values as Date, Time or DateTime values}[/align]
[align=left]LineSeries1.AddXY( EncodeDate( 1996 , 1 , 23 ) , 25.4 , 'Barcelona' , clGreen );[/align]
[align=left]1.4.6如何在chart中画出的曲线某个点上标记出该点的值?[/align]
[align=left]Series.Marks.Visible:=true;[/align]
[align=left]Series.Marks.Style:=smsValue;[/align]
[align=left]1.4.7如何设置横轴或者纵轴的增长率?[/align]
[align=left]Chart.BottomAxis.Increment := DataTimeStep[ dtOneHour ] ;[/align]
[align=left]Chart.RightAxis.Increment := 1000;[/align]
[align=left]1.4.8如何对图象进行缩放?[/align]
[align=left]TChart的ZoomRect或者ZoomPercent方法 (Pie图可能不支持缩放) [/align]
[align=left]1.5 [TChart可以绘制的图形][/align]
[align=left]1.5.1 Line ( TLineSeries)[/align]
[align=left]1.5.2 FastLine (TFastLineSeries) 相对Line来说,它损耗了某些属性从而来实现快速绘制[/align]
[align=left]1.5.3 Bar (TBarSeries)[/align]
[align=left]1.5.4 Horizontal bar (THorizBarSeries)[/align]
[align=left]1.5.5 Area (TAreaSeries)[/align]
[align=left]1.5.6 Point (TPointSeries)[/align]
[align=left]1.5.7 Pie (TPieSeries)[/align]
[align=left]1.5.8 Arrow (TArrowSeries)[/align]
[align=left]1.5.9 Bubble (TBubbleSeries)[/align]
[align=left]1.5.10 Gantt (TGanttSeries)[/align]
[align=left]1.5.11 Sharp (TChartShape)[/align]
[align=left]1.6 [TChart的实时绘制] [/align]
[align=left]实时绘制对机器性能要求比较高,因此我们在编程的时候要注意下面几个方面:[/align]
[align=left]ü 使用2D图形[/align]
[align=left]ü 是Chart尽可能包含少的点[/align]
[align=left]ü 如果需要,可以移除(remove)chart的legend(?????)和Title[/align]
[align=left]ü 使用默认的字体和字体大小[/align]
[align=left]ü 使用FastLineSeries[/align]
[align=left]ü 使用实体(solid)画笔和画刷格式[/align]
[align=left]ü 尽量避免使用圆形和环行bar样式[/align]
[align=left]ü 不要使用背景图片和渐变效果样式[/align]
[align=left]ü 把Chart的BevelInner和BevelOUter属性设置为bcNone[/align]
[align=left]ü 如果需要,把TChart的AxisVisible属性设置为False[/align]
[align=left]ü 把BufferedDisplay设置为false可以加速chart的重绘 [/align]
[align=left]1.7 [Scrolling][/align]
[align=left] TChart有4中scroll选择(AllowPanning属性),分别是 不允许Scroll ( pmNone) ; 水平Scroll (pmHorizontal) ; 垂直Scroll (pmVertical) ; 水平和垂直Scroll (pmBoth)[/align]
[align=left]Procedure Scroll(Const Offset:Double; CheckLimits:Boolean);[/align]
[align=left]例子如下:[/align]
[align=left] Chart1.BottomAxis.Scroll( 1000, True );这段代码也等同于[/align]
[align=left]With Chart1.BottomAxis do[/align]
[align=left]Begin[/align]
[align=left] Automatic:=false;[/align]
[align=left] SetMinMax( Minimum+1000, Maximum+1000 );[/align]
[align=left] End;[/align]
[align=left]1.8 [TChart中的全局变量][/align]
[align=left]1.9 ü TeeScrollMouseButton := mbRight;设置鼠标右键为TChart滚动键(默认)[/align]
[align=left]ü TeeScrollKeyShift := [ ssCtrl ]; 要按住Control键才可以使Scroll滚动[/align]
[align=left] [/align]
[align=left]1.9 [TChartSerries使用技巧][/align]
[align=left]1.9.1运行时候创建一个Serries, 三种方法:[/align]
[align=left]1.Var MySeries : TBarSeries ;[/align]
[align=left]MySeries := TBarSeries.Create( Self );[/align]
[align=left]MySeries.ParentChart := Chart1 ;[/align]
[align=left] 2.Chart1.AddSeries( TBarSeries.Create( Self ) );[/align]
[align=left] 3.Var MyClass : TChartSeriesClass; [/align]
[align=left]MyClass := TBarSeries ;[/align]
[align=left]Chart1.AddSeries( MyClass.Create( Self ) );[/align]
[align=left]1.9.2获得TChart中的Serries数组,也有三种方法[/align]
[align=left]1.MySeries := Chart1.SeriesList [ 0 ][/align]
[align=left]2.MySeries := Chart1.Series [ 0 ][/align]
[align=left]3.MySeries := Chart1 [ 0 ][/align]
[align=left]1.9.3 SerriesCount属性获得SeriesList中Series的个数[/align]
[align=left]1.9.4隐藏TChart中的Series有三种方法,但是效果不等价[/align]
[align=left]1. Series1.Active:=False; 仅仅隐藏,当设置为true的时候还可以显示出来[/align]
[align=left]2. Series1.ParentChart:=nil ; 隐藏,重新设置ParentChart为TChart时候可以显示[/align]
[align=left]3. Series1.Free; 删除了Series. 不可以恢复[/align]
[align=left]1.9.5 TChart中的数据排序[/align]
[align=left] With Series1 do[/align]
[align=left]begin[/align]
[align=left] YValues.Order:=loAscending;[/align]
[align=left] YValues.Sort;[/align]
[align=left] Repaint;[/align]
[align=left]end;[/align]
[align=left]Ø 定位一个点(Loacate a point)[/align]
[align=left]Series1.XValues.Locate(123);[/align]
[align=left]Ø XValue和YValue都拥有的属性Total , TotalABS , MaxValue , MinValue[/align]
[align=left]teechart笔记(Delphi)[/align]
[align=left]来自:bobo 日期:2006-12-4 23:09:07 全文阅读:loading... 分类:学习札记[/align]
[align=left]1.series的方法[/align]
[align=left]1.1 ColorRange设定一定范围的点和线的颜色。[/align]
[align=left]procedure ColorRange(AValueList: TChartValueList; Const FromValue, ToValue: Double; AColor: TColor);[/align]
[align=left]其中:The TChartValueList component is the container of point values.[/align]
[align=left] Each Series component has one or more values lists.[/align]
[align=left] The XValues and YValues properties are TChartValueList components.[/align]
[align=left] 可以是XValues 或YValues;FromValue, ToValue是范围。AColor是点的颜色。 [/align]
[align=left] UnitTeEngine[/align]
[align=left] DescriptionThis method will change the Color of a specified range of points.[/align]
[align=left] The FromValue and ToValue parameters are the beginning and end of the specified AValueList range.[/align]
[align=left] [/align]
[align=left]AValueList can be any Series ValueList such as: XValues, YValues, etc.[/align]
[align=left] 对某一特定的点:可以用series.valuecolor[index]属性[/align]
[align=left]property ValueColor[Index: Integer]: TColor;[/align]
[align=left]Use the ValueColor property to get or set the Color of a point at a particular position. Index gives the position of the point, where 0 is the first, 1 is the second, and so on.[/align]
[align=left] 不过这两个方法都会导致线的颜色也会改变:改变的模式是若下一点出界,则从此点到下一点的连线的颜色变为指定点的颜色。[/align]
[align=left] 用这种方法可以改变各个点的形状,result即是具体点的形状。[/align]
[align=left]function TForm1.Series1GetPointerStyle(Sender: TChartSeries;[/align]
[align=left] ValueIndex: Integer): TSeriesPointerStyle;[/align]
[align=left]begin[/align]
[align=left] if ValueIndex mod 2=0 then result:=psRectangle[/align]
[align=left] else result:=psTriangle;[/align]
[align=left] end;[/align]
[align=left] 1.2 CalcXPosValue 把某一轴X/Y轴的值,转化为窗体的像素值(整型)。[/align]
[align=left]CalcXPosValue(Const Value: Double): Integer;[/align]
[align=left] UnitTeEngine[/align]
[align=left] DescriptionReturns the pixel Screen Horizontal coordinate of the specified Value.[/align]
[align=left]for example:[/align]
[align=left]procedure TForm1.Chart1AfterDraw(Sender: TObject);[/align]
[align=left]var tmp : Integer;[/align]
[align=left]begin[/align]
[align=left] tmp:=Series1.CalcPosValue( 123 );[/align]
[align=left] with Chart1.Canvas do[/align]
[align=left] Rectangle(tmp-5,tmp-5,tmp 5,tmp 5);[/align]
[align=left]end;[/align]
[align=left] 1.3 画水平直线Chart1AfterDraw的时间中[/align]
[align=left]Procedure TForm1.DBChart1AfterDraw(Sender: TObject);[/align]
[align=left]begin[/align]
[align=left]drawLimits(ChrtNum, width: integer; Value: Double; color: TColor);[/align]
[align=left]end;[/align]
[align=left] drawLimits(ChrtNum, width: integer; Value: Double; color: TColor);[/align]
[align=left]var[/align]
[align=left] PixValue:integer; [/align]
[align=left]begin[/align]
[align=left]with dbcht1.Canvas do[/align]
[align=left] begin[/align]
[align=left] PixValue := seriesx.CalcYPosValue(Value);[/align]
[align=left] if (PixValue<dbcht1.ChartRect.Top) or (PixValue>dbcht1.ChartRect.Bottom) then//判断是否已经超出dbcht1.ChartRect的范围。[/align]
[align=left] Pen.Color:=dbcht1.Color[/align]
[align=left] else[/align]
[align=left] Pen.Color := color;[/align]
[align=left] Pen.Width := width;[/align]
[align=left] MoveTo(dbcht1.ChartRect.Left, PixValue);[/align]
[align=left] LineTo(dbcht1.ChartRect.Right, PixValue);[/align]
[align=left] end;[/align]
[align=left]end; [/align]
[align=left]1.4 通过函数function来画直线/各种自定义曲线;[/align]
[align=left]series|dataSource|function. 在object treeView对象观察器中 series1|TeeFunction1 的OnCalculate事件中添加公式[/align]
[align=left]procedure TForm1.TeeFunction1Calculate(Sender: TCustomTeeFunction;[/align]
[align=left] const x: Double; var y: Double);[/align]
[align=left]begin[/align]
[align=left] y:=50;[/align]
[align=left] //y:=Sin(x/10);[/align]
[align=left]end;[/align]
[align=left] 1.5 取消chart的网格[/align]
[align=left]在chart|axis|Ticks|grid…中操作,此操作针对某一轴而言,如leftaxis,对于bottomaxis要选择它再操作。[/align]
[align=left] 1.6 mark tips显示数据标签的chart工具。[/align]
[align=left]设定自定义的标签的方法:[/align]
[align=left]设定一个单元局部变量 MarkText:string[/align]
[align=left]在chart的onMouseMove中添加事件。[/align]
[align=left]procedure TfrmVChart.dbcht1MouseMove(Sender: TObject; Shift: TShiftState;[/align]
[align=left] X, Y: Integer); [/align]
[align=left] var tmp: Integer; [/align]
[align=left] begin [/align]
[align=left] tmp := SeriesX.Clicked(x, y);//返回该点的所在的series上序号,从0开始。 [/align]
[align=left] if tmp = -1 then //没有点中曲线上的点。 [/align]
[align=left] labelText := '' [/align]
[align=left] else [/align]
[align=left] begin [/align]
[align=left] MarkText := '序号:' FloatToStr(SeriesX.XValue[tmp]) #13 '数值:'; [/align]
[align=left] MarkText := labelText FormatFloat('#,##0.####',SeriesX.YValue[tmp]) #13 'XUCL:' FormatFloat('#,##0.####',XUCL); [/align]
[align=left] MarkText := labelText #13 'XCL :' FormatFloat('#,##0.####',XCL) #13 'XLCL:' FormatFloat('#,##0.####',XLCL); [/align]
[align=left] end; [/align]
[align=left] end; [/align]
[align=left] 再在marktipstools的GetText事件中添加代码,修改要显示的值。 [/align]
[align=left] procedure TfrmVChart.ChartTool1GetText(Sender: TMarksTipTool; [/align]
[align=left] var Text: string);[/align]
[align=left]begin[/align]
[align=left] Text := MarkText;[/align]
[align=left]end;[/align]
[align=left] 1.7 自定义轴的标签(Label)[/align]
[align=left]procedure TAxisItemsDemo.FormCreate(Sender: TObject);[/align]
[align=left]begin[/align]
[align=left] inherited;[/align]
[align=left] Series1.AddArray([200,0,123,300,260,-100,650,400]);//添加数据[/align]
[align=left] AddCustomLabels;[/align]
[align=left]end;[/align]
[align=left] Procedure TAxisItemsDemo.AddCustomLabels;[/align]
[align=left]begin[/align]
[align=left] with Chart1.Axes.Left do[/align]
[align=left] begin[/align]
[align=left] Items.Clear; // remove all custom labels//删除原有的标签。[/align]
[align=left] // add custom labels[/align]
[align=left] Items.Add(123,'Hello').Font.Size:=16;[/align]
[align=left] Items.Add(466,'Good'#13'Bye').Transparent:=False;[/align]
[align=left] Items.Add(300);[/align]
[align=left] with Items.Add(-100) do //标签的一些属性。[/align]
[align=left] begin[/align]
[align=left] Transparent:=False;[/align]
[align=left] Transparency:=50;[/align]
[align=left] Color:=clBlue;[/align]
[align=left] end;[/align]
[align=left] end;[/align]
[align=left]end;[/align]
[align=left] 1.8 teefunction,自定义函数的功能。[/align]
[align=left]属性:munPoints:计算次数[/align]
[align=left] Period:两次计算之间的x值的增量[/align]
[align=left] starX:X的开始值。[/align]
[align=left] periodStyle:period的方式,当是datetime类型时,很有用。如:Period:DateTimeStep[ dtOneMonth ],或DateTimeStep[ dtOneDay ][/align]
[align=left] [/align]
[align=left]1.9 teefunction的periodStyle[/align]
[align=left]So, for example you can now plot the, for example, monthly average of sales function just using a normal Average function on a date-time source series and setting the function period to one month :[/align]
[align=left] { Place a Series1 and fill it with datetime data values at runtime (or from a database) }[/align]
[align=left] Series2.SetFunction( TAverageTeeFunction.Create ) ;[/align]
[align=left]Series2.FunctionType.PeriodStyle:=psRange;[/align]
[align=left]Series2.FunctionType.Period:=DateTimeStep[ dtOneMonth ];[/align]
[align=left]Series2.DataSource:=Series1 ;[/align]
[align=left] This will result in several points, each one showing the average of each month of data in Series1.[/align]
[align=left]It's mandatory that points in the source Series1 should be sorted by date when calculating functions on datetime periods.[/align]
[align=left] The range can also be used for non-datetime series:[/align]
[align=left] Series2.SetFunction( TAverageTeeFunction.Create ) ;[/align]
[align=left]Series2.FunctionType.PeriodStyle:=psRange;[/align]
[align=left]Series2.FunctionType.Period:=100;[/align]
[align=left]Series2.DataSource:=Series1 ;[/align]
[align=left] This will calculate an average for each group of points inside every 100 interval.[/align]
[align=left] (Points with X >=0, X<100 will be used to calculate the first average, points with X >=100, X<200 will be used to calculate the second average and so on... )[/align]
[align=left]Notice this is different than calculating an average for every 100 points. [/align]
[align=left]在表单上增加一个Chart1,在FormCreate事件中添加[/align]
[align=left] Chart1->AddSeries(new TPieSeries(Chart1)); // 添加一个饼形图[/align]
[align=left] Chart1->Series[0]->Clear();[/align]
[align=left] Chart1->View3D = true; // 是否以3D形式显示[/align]
[align=left] Chart1->TopAxis->Title->Caption = "X TEST TEST"; Chart1->BottomAxis->Title->Caption = "Y TESTTES ";[/align]
[align=left] Chart1->Title->Text->Strings[0] = "hi";[/align]
[align=left] for (int i = 1; i <= 12; i )[/align]
[align=left] {[/align]
[align=left] Chart1->Series[0]->AddXY(i , i);[/align]
[align=left] } [/align]
[align=left]在各种图形之间切换[/align]
[align=left]首先 delete Chart1->Series[0] 删除原来的图形对象,再重新生成,如:[/align]
[align=left] delete Chart1->Series[0];[/align]
[align=left] Chart1->AddSeries(new TBarSeries(Chart1));[/align]
[align=left] Chart1->View3D = true;[/align]
[align=left] Chart1->TopAxis->Title->Caption = "X TEST TEST";[/align]
[align=left] Chart1->BottomAxis->Title->Caption = "Y TESTTES ";[/align]
[align=left] for (int i = 1; i <= 12; i )[/align]
[align=left] {[/align]
[align=left] Chart1->Series[0]->AddXY(i , i);[/align]
[align=left] }【全文结束】[/align]
delphi中TeeChart的各种属性
TeeChart使用指南
TeeChart控件介绍
TeeChart Pro ActiveX是西班牙Steema SL公司开发的图表类控件,主要用来生成各种复杂的图表。熟悉Delphi和C++ Builder的编程人员对它不会陌生,因为在Delphi和C++ Builder里包括了TeeChart的VCL版本。
TeeChart使用目的
如果你需要在程序中制作曲线图、条状图、饼状图等等,使用这个控件都将是你的明智选择。它因为是已经被封装好的产品,所以使用方便,可控性强,不过有的时候会有点小BUG。最好能找到源码,并自己打几个补丁。
TeeChart名词解释
Series
Axis
Scales
Line
Bar
Pie
TeeChart配置说明
ChartSeries(序列) : 在一个图表中可以有一个或多个序列,每个序列可以有不同的显示类型,如Line、Bar、Pie等等。
Add… 添加新的序列
Fast Line(TFastLineSeries简单曲线图)、
Line(TLineSeries 3D曲线图)、
Bar(TBarSeries竖条状图)、
Horiz. Bar(THorizBarSeries横条状图)
Area(TAreaSeries 区域图)、
Point(TPointSeries 点状图)、
Pie(TPieSeries 饼状图)、
Shape(TChartShape 实体图)、
Gantt(TGanttSeries 甘特图)、
Arrow(TArrowSeries 箭头图)、
Bubble(TBubbleSeries 泡泡图)
SeriesFormat:修改序列的格式
SeriesPoint:修改序列中点的样子
SeriesGeneral:对序列的配置,包括Axis,Legend,Formats,Cursor。
SeriesMarks:是否显示序列中每个点的值。
SeriesData Source:数据源。可以采用No Data,Random Values,Function。
Title… 修改序列的名称。
Change… 修改序列的类型,可以从Line改变成Bar或者Pie。
ChartGeneral:一些基本的参数设置。
Print Priview…:打印及打印预览
Export…:输出
Margins:页边空白
Allow Zoom:允许缩放
Animated Zoom:缩放过程是否是动态的,还是一次成功。(如果图的点太多时,可以打开这个功能)
Allow Scroll:滚动条
ChartAxis : 控制图表坐标轴(上、下、左、右、深)的属性
Show Axis:是否显示坐标轴
ChartAxisScales:调整坐标轴的比例
Automatic:可以自动处理最大与最小值,也可以手工设置。
Change…:可以自动处理增量,也可以手工设置。
Logarithmic:对数的
Inverted:反向的
ChartAxisTitle:设置坐标轴的标题
Title:标题
Angle:标题的角度
Size:标题的宽度
Font…:标题的字体
ChartAxisLabels:设置坐标轴的标签
Titles :
ChartLegend(图例):图表中的一个长方形的用来显示图例标注的区域。可以标注Series的名称或者Series中的项目和数值。
Visible
Back Color
Font
Frame
Position
Margin
Legend Style
Text Style
Resize Chart
Inverted
%Top Pos
%Color Width
Dividing Lines…
Shadow
ChartPanel (面板):Panel可以设置图表的背景。可以使用渐变的颜色或者图像文件作为整个图表的背景
Bevel Inner (Bevel Innner ) Width
Bevel Outer (Bevel Outer) Width
Back Image:图表的背景图
Style:(Stretch伸展, Tile瓦片, Center居中)
Inside:只显示在背后壁上
Panel Color:Panel的Inner的颜色
Border:给控件加边界
Gradient(梯度):梯度显示颜色
Visible、Start Color…、End Color…、
Direction(方向):上下、左右、从中间
ChartPaging :图表有几页组成
Points Per Page(每页显示几个点):0为所有的点显示在一页,其他按数字处理。
Scale Last Page:最后一页按比例显示,使之充满整个图表。
ChartWalls(壁)
Left Walls:Y轴的平面
Bottom Walls:X轴的平面
Back Walls:背后的平面
Pattern…(模式):=(Solid实心,None无,Horizontal竖条纹,Vertical横条纹,
Diagonal对角线,Back.Diagonal反向对角线,Cross十字线,DiagonalCross对角十字线);
Border…(边线):=(Solid实线, Dash划线, Dot点,
Dash Dot线点, Dash Dot Dot线点点, Small Dots小点)
Transparent (透明)
Chart3D
3Dimensions(维):是否3维显示
Orthogonal(直角的):3维显示为直角显示,则Elevation,Rotaion,Perspective被屏蔽
ZoomText:坐标数字与图形一起缩放
Zoom:图形的缩放
Rotaion(旋转):关闭Orthogonal后,可以在Y轴上旋转
Elevation(正视图) :关闭Orthogonal后,可以在X轴上旋
Horiz. Offset:在X轴移动图形
Vert. Offset:在Y轴移动图形
Perspective(透视) :关闭Orthogonal后,将焦点沿Z轴移动。
TeeChart使用实例
// AddPages
NewTabSheet := TTabSheet.Create(pgMain);
with NewTabSheet do
begin
Parent := pgMain;
PageControl := pgMain;
Tag := Ord(CountTypeIndex);
Caption := arrCountType[CountTypeIndex];
end;
// AddCharts
NewChart := TChart.Create(NewTabSheet);
with NewChart do
begin
Parent := NewTabSheet;
Title.Text.Add('网间结算' + arrCountType[CountTypeIndex] + '/天分布图');
LeftAxis.Title.Caption := arrCountType[CountTypeIndex];
BottomAxis.Title.Caption := '话单日期';
Legend.Visible := sbLegend.Down;
Legend.Alignment := laBottom;
Legend.LegendStyle := lsSeries;
View3D := sb3D.Down;
Width := NewTabSheet.Width;
Height := NewTabSheet.Height;
end;
// ClearSeries
AChart.Series[SeriesIndex].Free;
// AddSeries
NewSeries := TLineSeries.Create(AChart);
NewSeries.Title := ANameList.Strings[SeriesIndex];
NewSeries.Marks.Visible :=True;
AChart.AddSeries(NewSeries);
// AddNameForSeries
AChart.SeriesList[SeriesIndex].Title:= NewName;
// ShowSeries
AChart.Series[SeriesIndex].Active := True;
// EmptySeries
AChart.Series[SeriesIndex].Clear;
// FillSeries
AChart.Series[SeriesIndex].AddXY();
1、问题:通过Addxy方法给TChart添加标记(Mark)时,发现在TChart的横坐标会随着Mark而变化,后来发现通过以下方法可避免这种情况:双击TChart,点击Axis-> top or bottom ->labels,在styles中将labels的形式改为Value即可!
2、几个有用的属性:
图表上的每个点都是有索引的,就象一个数组一样,在OnClickSeries事件中有个ValueIndex属性,该属性可以得到鼠标所点击的点的索引值(必须将Series的Point设置为可见,鼠标点击到那个点时才可以触发该事件)。
xValue[index]、yValue[index]分别表示图表的索引为index的横纵坐标值,用这两个属性可以读取和设置索引为index的点的值,注意:不要用xValues和yValues,这两个属性也可以达到同样的目的,但是速度非常的慢。因为后两个在进行操作的时候可能要遍历整个图表上的值(个人观点)
在MouseDown,MouseMove,Mouseup中,可以利用xScreentoValue(x),yScreentoValue(y)得到鼠标当时所在点对应在图表上的横纵坐标值。
e.g......
private
Nowindex:Integer;
Cantuo:boolean;
........
procedure TfrmMain.Chart1ClickSeries(Sender: TCustomChart;
Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
NowIndex:=ValueIndex;
end;
procedure TfrmMain.Chart1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Cantuo:=true;
end;
procedure TfrmMain.Chart1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Cantuo:=false;
end;
procedure TfrmMain.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Cantuo then
begin
Series1.yValue[NowIndex]:= Series1.yScreenToValue(y) ;
end;
end;
这里即实现了可以在图表中拖动某一个点使其在纵轴上变化位置
Tchart分析报告
[align=left]1 Tchart分析报告[/align]
[align=left]1.1 [概述][/align]
[align=left] TChart是delphi里面一个标准的图形显示控件。它可以静态设计(at design time)也可以动态生成。[/align]
[align=left]1.2 [继承关系] [/align]
[align=left]TObject[/align] |
[align=left]TPersistent[/align] |
[align=left]TComponent[/align] |
[align=left]TControl[/align] |
[align=left]TCustomControl[/align] |
[align=left]TWedgetControl[/align] |
[align=left]TChart[/align] |
[align=left]TCustomPanel[/align] |
[align=left]1.3.1 Pro Version支持Bezier , Contour , Radar 和 point3D 曲线[/align]
[align=left]1.3.2支持jpeg文件的导出[/align]
[align=left]1.3.3 Chart中的Series 可以连接到Table , Query , RemoteDataset(其他数据集)[/align]
[align=left]1.3.4 TChart里的series的active属性可以实现对已绘制图形的显示或者隐藏[/align]
[align=left]1.3.5在TChart中, tchartSeries是所有具体series的父类,没有画出什么来的,用一个具体的series类来创建就可以了,比如用TLineSeries、TPieSeries、 TPointSeries、 TPointSeries等等都行[/align]
[align=left]1.3.6 TTeeFunction Component可以实现在同一个TChart里面,一个Serries对另一个Serries的统计[/align]
[align=left] [/align]
[align=left]1.4 [问题极其使用技巧][/align]
[align=left]1.4.1 TChart中如何实现只有Y轴的放大与缩小功能?[/align]
[align=left]设置BottomAxis或者LeftAxis的Automatic:=false并同时设置Minimum,Maximum属性[/align]
[align=left]1.4.2如何固定TChart中的坐标,不使TChart中的坐标跟随Series的变化而变化?[/align]
[align=left]//设置底座标[/align]
[align=left] with myChart.BottomAxis do[/align]
[align=left] begin[/align]
[align=left] Automatic:=false;[/align]
[align=left] Minimum:=0;[/align]
[align=left] LabelStyle := talText;[/align]
[align=left] end;[/align]
[align=left] //设置左坐标[/align]
[align=left] with myChart.LeftAxis do[/align]
[align=left] begin[/align]
[align=left] Automatic:=false;[/align]
[align=left] Minimum:=0;[/align]
[align=left] Title.Angle:=270;[/align]
[align=left] Title.Font:=Self.Font;[/align]
[align=left] Title.Font.Charset:=ANSI_CHARSET;[/align]
[align=left] Title.Font.Name:='@宋体';[/align]
[align=left] Grid.Visible := False;[/align]
[align=left] end;[/align]
[align=left] //设置右坐标[/align]
[align=left] with myChart.RightAxis do[/align]
[align=left] begin[/align]
[align=left] Automatic:=false;[/align]
[align=left] Title.Font:=Self.Font;[/align]
[align=left] Title.Font.Charset:=ANSI_CHARSET;[/align]
[align=left] Title.Font.Name:='@宋体';[/align]
[align=left] Title.Caption:='累计百分比(%)';[/align]
[align=left] Maximum:=100;[/align]
[align=left] Minimum:=0;[/align]
[align=left] end;[/align]
[align=left]1.4.3如何删除一个图形中的一个点?[/align]
[align=left]使用Series的delete 方法[/align]
[align=left]1.4.4如何修改一个点的X或者Y 值?[/align]
[align=left]LineSeries1.YValue[3] := 27.1 ;[/align]
[align=left]{In Bubble Series}[/align]
[align=left]BubbleSeries1.RadiusValues.Value[ 8 ] := 8.1 ;[/align]
[align=left]{In Pie Series}[/align]
[align=left]PieSeries1.PieValues.Value[ 3 ] := 111 ;[/align]
[align=left]1.4.5如果横坐标是时间(日期),如何进行设置?[/align]
[align=left]{First, you need to set the DateTime property to True in the desired X and/or Y values list.}[/align]
[align=left]LineSeries1.XValues.DateTime := True ;[/align]
[align=left]{Second, use the same above described methods, but give the values as Date, Time or DateTime values}[/align]
[align=left]LineSeries1.AddXY( EncodeDate( 1996 , 1 , 23 ) , 25.4 , 'Barcelona' , clGreen );[/align]
[align=left]1.4.6如何在chart中画出的曲线某个点上标记出该点的值?[/align]
[align=left]Series.Marks.Visible:=true;[/align]
[align=left]Series.Marks.Style:=smsValue;[/align]
[align=left]1.4.7如何设置横轴或者纵轴的增长率?[/align]
[align=left]Chart.BottomAxis.Increment := DataTimeStep[ dtOneHour ] ;[/align]
[align=left]Chart.RightAxis.Increment := 1000;[/align]
[align=left]1.4.8如何对图象进行缩放?[/align]
[align=left]TChart的ZoomRect或者ZoomPercent方法 (Pie图可能不支持缩放) [/align]
[align=left]1.5 [TChart可以绘制的图形][/align]
[align=left]1.5.1 Line ( TLineSeries)[/align]
[align=left]1.5.2 FastLine (TFastLineSeries) 相对Line来说,它损耗了某些属性从而来实现快速绘制[/align]
[align=left]1.5.3 Bar (TBarSeries)[/align]
[align=left]1.5.4 Horizontal bar (THorizBarSeries)[/align]
[align=left]1.5.5 Area (TAreaSeries)[/align]
[align=left]1.5.6 Point (TPointSeries)[/align]
[align=left]1.5.7 Pie (TPieSeries)[/align]
[align=left]1.5.8 Arrow (TArrowSeries)[/align]
[align=left]1.5.9 Bubble (TBubbleSeries)[/align]
[align=left]1.5.10 Gantt (TGanttSeries)[/align]
[align=left]1.5.11 Sharp (TChartShape)[/align]
[align=left]1.6 [TChart的实时绘制] [/align]
[align=left]实时绘制对机器性能要求比较高,因此我们在编程的时候要注意下面几个方面:[/align]
[align=left]ü 使用2D图形[/align]
[align=left]ü 是Chart尽可能包含少的点[/align]
[align=left]ü 如果需要,可以移除(remove)chart的legend(?????)和Title[/align]
[align=left]ü 使用默认的字体和字体大小[/align]
[align=left]ü 使用FastLineSeries[/align]
[align=left]ü 使用实体(solid)画笔和画刷格式[/align]
[align=left]ü 尽量避免使用圆形和环行bar样式[/align]
[align=left]ü 不要使用背景图片和渐变效果样式[/align]
[align=left]ü 把Chart的BevelInner和BevelOUter属性设置为bcNone[/align]
[align=left]ü 如果需要,把TChart的AxisVisible属性设置为False[/align]
[align=left]ü 把BufferedDisplay设置为false可以加速chart的重绘 [/align]
[align=left]1.7 [Scrolling][/align]
[align=left] TChart有4中scroll选择(AllowPanning属性),分别是 不允许Scroll ( pmNone) ; 水平Scroll (pmHorizontal) ; 垂直Scroll (pmVertical) ; 水平和垂直Scroll (pmBoth)[/align]
[align=left]Procedure Scroll(Const Offset:Double; CheckLimits:Boolean);[/align]
[align=left]例子如下:[/align]
[align=left] Chart1.BottomAxis.Scroll( 1000, True );这段代码也等同于[/align]
[align=left]With Chart1.BottomAxis do[/align]
[align=left]Begin[/align]
[align=left] Automatic:=false;[/align]
[align=left] SetMinMax( Minimum+1000, Maximum+1000 );[/align]
[align=left] End;[/align]
[align=left]1.8 [TChart中的全局变量][/align]
[align=left]1.9 ü TeeScrollMouseButton := mbRight;设置鼠标右键为TChart滚动键(默认)[/align]
[align=left]ü TeeScrollKeyShift := [ ssCtrl ]; 要按住Control键才可以使Scroll滚动[/align]
[align=left] [/align]
[align=left]1.9 [TChartSerries使用技巧][/align]
[align=left]1.9.1运行时候创建一个Serries, 三种方法:[/align]
[align=left]1.Var MySeries : TBarSeries ;[/align]
[align=left]MySeries := TBarSeries.Create( Self );[/align]
[align=left]MySeries.ParentChart := Chart1 ;[/align]
[align=left] 2.Chart1.AddSeries( TBarSeries.Create( Self ) );[/align]
[align=left] 3.Var MyClass : TChartSeriesClass; [/align]
[align=left]MyClass := TBarSeries ;[/align]
[align=left]Chart1.AddSeries( MyClass.Create( Self ) );[/align]
[align=left]1.9.2获得TChart中的Serries数组,也有三种方法[/align]
[align=left]1.MySeries := Chart1.SeriesList [ 0 ][/align]
[align=left]2.MySeries := Chart1.Series [ 0 ][/align]
[align=left]3.MySeries := Chart1 [ 0 ][/align]
[align=left]1.9.3 SerriesCount属性获得SeriesList中Series的个数[/align]
[align=left]1.9.4隐藏TChart中的Series有三种方法,但是效果不等价[/align]
[align=left]1. Series1.Active:=False; 仅仅隐藏,当设置为true的时候还可以显示出来[/align]
[align=left]2. Series1.ParentChart:=nil ; 隐藏,重新设置ParentChart为TChart时候可以显示[/align]
[align=left]3. Series1.Free; 删除了Series. 不可以恢复[/align]
[align=left]1.9.5 TChart中的数据排序[/align]
[align=left] With Series1 do[/align]
[align=left]begin[/align]
[align=left] YValues.Order:=loAscending;[/align]
[align=left] YValues.Sort;[/align]
[align=left] Repaint;[/align]
[align=left]end;[/align]
[align=left]Ø 定位一个点(Loacate a point)[/align]
[align=left]Series1.XValues.Locate(123);[/align]
[align=left]Ø XValue和YValue都拥有的属性Total , TotalABS , MaxValue , MinValue[/align]
[align=left]teechart笔记(Delphi)[/align]
[align=left]来自:bobo 日期:2006-12-4 23:09:07 全文阅读:loading... 分类:学习札记[/align]
[align=left]1.series的方法[/align]
[align=left]1.1 ColorRange设定一定范围的点和线的颜色。[/align]
[align=left]procedure ColorRange(AValueList: TChartValueList; Const FromValue, ToValue: Double; AColor: TColor);[/align]
[align=left]其中:The TChartValueList component is the container of point values.[/align]
[align=left] Each Series component has one or more values lists.[/align]
[align=left] The XValues and YValues properties are TChartValueList components.[/align]
[align=left] 可以是XValues 或YValues;FromValue, ToValue是范围。AColor是点的颜色。 [/align]
[align=left] UnitTeEngine[/align]
[align=left] DescriptionThis method will change the Color of a specified range of points.[/align]
[align=left] The FromValue and ToValue parameters are the beginning and end of the specified AValueList range.[/align]
[align=left] [/align]
[align=left]AValueList can be any Series ValueList such as: XValues, YValues, etc.[/align]
[align=left] 对某一特定的点:可以用series.valuecolor[index]属性[/align]
[align=left]property ValueColor[Index: Integer]: TColor;[/align]
[align=left]Use the ValueColor property to get or set the Color of a point at a particular position. Index gives the position of the point, where 0 is the first, 1 is the second, and so on.[/align]
[align=left] 不过这两个方法都会导致线的颜色也会改变:改变的模式是若下一点出界,则从此点到下一点的连线的颜色变为指定点的颜色。[/align]
[align=left] 用这种方法可以改变各个点的形状,result即是具体点的形状。[/align]
[align=left]function TForm1.Series1GetPointerStyle(Sender: TChartSeries;[/align]
[align=left] ValueIndex: Integer): TSeriesPointerStyle;[/align]
[align=left]begin[/align]
[align=left] if ValueIndex mod 2=0 then result:=psRectangle[/align]
[align=left] else result:=psTriangle;[/align]
[align=left] end;[/align]
[align=left] 1.2 CalcXPosValue 把某一轴X/Y轴的值,转化为窗体的像素值(整型)。[/align]
[align=left]CalcXPosValue(Const Value: Double): Integer;[/align]
[align=left] UnitTeEngine[/align]
[align=left] DescriptionReturns the pixel Screen Horizontal coordinate of the specified Value.[/align]
[align=left]for example:[/align]
[align=left]procedure TForm1.Chart1AfterDraw(Sender: TObject);[/align]
[align=left]var tmp : Integer;[/align]
[align=left]begin[/align]
[align=left] tmp:=Series1.CalcPosValue( 123 );[/align]
[align=left] with Chart1.Canvas do[/align]
[align=left] Rectangle(tmp-5,tmp-5,tmp 5,tmp 5);[/align]
[align=left]end;[/align]
[align=left] 1.3 画水平直线Chart1AfterDraw的时间中[/align]
[align=left]Procedure TForm1.DBChart1AfterDraw(Sender: TObject);[/align]
[align=left]begin[/align]
[align=left]drawLimits(ChrtNum, width: integer; Value: Double; color: TColor);[/align]
[align=left]end;[/align]
[align=left] drawLimits(ChrtNum, width: integer; Value: Double; color: TColor);[/align]
[align=left]var[/align]
[align=left] PixValue:integer; [/align]
[align=left]begin[/align]
[align=left]with dbcht1.Canvas do[/align]
[align=left] begin[/align]
[align=left] PixValue := seriesx.CalcYPosValue(Value);[/align]
[align=left] if (PixValue<dbcht1.ChartRect.Top) or (PixValue>dbcht1.ChartRect.Bottom) then//判断是否已经超出dbcht1.ChartRect的范围。[/align]
[align=left] Pen.Color:=dbcht1.Color[/align]
[align=left] else[/align]
[align=left] Pen.Color := color;[/align]
[align=left] Pen.Width := width;[/align]
[align=left] MoveTo(dbcht1.ChartRect.Left, PixValue);[/align]
[align=left] LineTo(dbcht1.ChartRect.Right, PixValue);[/align]
[align=left] end;[/align]
[align=left]end; [/align]
[align=left]1.4 通过函数function来画直线/各种自定义曲线;[/align]
[align=left]series|dataSource|function. 在object treeView对象观察器中 series1|TeeFunction1 的OnCalculate事件中添加公式[/align]
[align=left]procedure TForm1.TeeFunction1Calculate(Sender: TCustomTeeFunction;[/align]
[align=left] const x: Double; var y: Double);[/align]
[align=left]begin[/align]
[align=left] y:=50;[/align]
[align=left] //y:=Sin(x/10);[/align]
[align=left]end;[/align]
[align=left] 1.5 取消chart的网格[/align]
[align=left]在chart|axis|Ticks|grid…中操作,此操作针对某一轴而言,如leftaxis,对于bottomaxis要选择它再操作。[/align]
[align=left] 1.6 mark tips显示数据标签的chart工具。[/align]
[align=left]设定自定义的标签的方法:[/align]
[align=left]设定一个单元局部变量 MarkText:string[/align]
[align=left]在chart的onMouseMove中添加事件。[/align]
[align=left]procedure TfrmVChart.dbcht1MouseMove(Sender: TObject; Shift: TShiftState;[/align]
[align=left] X, Y: Integer); [/align]
[align=left] var tmp: Integer; [/align]
[align=left] begin [/align]
[align=left] tmp := SeriesX.Clicked(x, y);//返回该点的所在的series上序号,从0开始。 [/align]
[align=left] if tmp = -1 then //没有点中曲线上的点。 [/align]
[align=left] labelText := '' [/align]
[align=left] else [/align]
[align=left] begin [/align]
[align=left] MarkText := '序号:' FloatToStr(SeriesX.XValue[tmp]) #13 '数值:'; [/align]
[align=left] MarkText := labelText FormatFloat('#,##0.####',SeriesX.YValue[tmp]) #13 'XUCL:' FormatFloat('#,##0.####',XUCL); [/align]
[align=left] MarkText := labelText #13 'XCL :' FormatFloat('#,##0.####',XCL) #13 'XLCL:' FormatFloat('#,##0.####',XLCL); [/align]
[align=left] end; [/align]
[align=left] end; [/align]
[align=left] 再在marktipstools的GetText事件中添加代码,修改要显示的值。 [/align]
[align=left] procedure TfrmVChart.ChartTool1GetText(Sender: TMarksTipTool; [/align]
[align=left] var Text: string);[/align]
[align=left]begin[/align]
[align=left] Text := MarkText;[/align]
[align=left]end;[/align]
[align=left] 1.7 自定义轴的标签(Label)[/align]
[align=left]procedure TAxisItemsDemo.FormCreate(Sender: TObject);[/align]
[align=left]begin[/align]
[align=left] inherited;[/align]
[align=left] Series1.AddArray([200,0,123,300,260,-100,650,400]);//添加数据[/align]
[align=left] AddCustomLabels;[/align]
[align=left]end;[/align]
[align=left] Procedure TAxisItemsDemo.AddCustomLabels;[/align]
[align=left]begin[/align]
[align=left] with Chart1.Axes.Left do[/align]
[align=left] begin[/align]
[align=left] Items.Clear; // remove all custom labels//删除原有的标签。[/align]
[align=left] // add custom labels[/align]
[align=left] Items.Add(123,'Hello').Font.Size:=16;[/align]
[align=left] Items.Add(466,'Good'#13'Bye').Transparent:=False;[/align]
[align=left] Items.Add(300);[/align]
[align=left] with Items.Add(-100) do //标签的一些属性。[/align]
[align=left] begin[/align]
[align=left] Transparent:=False;[/align]
[align=left] Transparency:=50;[/align]
[align=left] Color:=clBlue;[/align]
[align=left] end;[/align]
[align=left] end;[/align]
[align=left]end;[/align]
[align=left] 1.8 teefunction,自定义函数的功能。[/align]
[align=left]属性:munPoints:计算次数[/align]
[align=left] Period:两次计算之间的x值的增量[/align]
[align=left] starX:X的开始值。[/align]
[align=left] periodStyle:period的方式,当是datetime类型时,很有用。如:Period:DateTimeStep[ dtOneMonth ],或DateTimeStep[ dtOneDay ][/align]
[align=left] [/align]
[align=left]1.9 teefunction的periodStyle[/align]
[align=left]So, for example you can now plot the, for example, monthly average of sales function just using a normal Average function on a date-time source series and setting the function period to one month :[/align]
[align=left] { Place a Series1 and fill it with datetime data values at runtime (or from a database) }[/align]
[align=left] Series2.SetFunction( TAverageTeeFunction.Create ) ;[/align]
[align=left]Series2.FunctionType.PeriodStyle:=psRange;[/align]
[align=left]Series2.FunctionType.Period:=DateTimeStep[ dtOneMonth ];[/align]
[align=left]Series2.DataSource:=Series1 ;[/align]
[align=left] This will result in several points, each one showing the average of each month of data in Series1.[/align]
[align=left]It's mandatory that points in the source Series1 should be sorted by date when calculating functions on datetime periods.[/align]
[align=left] The range can also be used for non-datetime series:[/align]
[align=left] Series2.SetFunction( TAverageTeeFunction.Create ) ;[/align]
[align=left]Series2.FunctionType.PeriodStyle:=psRange;[/align]
[align=left]Series2.FunctionType.Period:=100;[/align]
[align=left]Series2.DataSource:=Series1 ;[/align]
[align=left] This will calculate an average for each group of points inside every 100 interval.[/align]
[align=left] (Points with X >=0, X<100 will be used to calculate the first average, points with X >=100, X<200 will be used to calculate the second average and so on... )[/align]
[align=left]Notice this is different than calculating an average for every 100 points. [/align]
[align=left]在表单上增加一个Chart1,在FormCreate事件中添加[/align]
[align=left] Chart1->AddSeries(new TPieSeries(Chart1)); // 添加一个饼形图[/align]
[align=left] Chart1->Series[0]->Clear();[/align]
[align=left] Chart1->View3D = true; // 是否以3D形式显示[/align]
[align=left] Chart1->TopAxis->Title->Caption = "X TEST TEST"; Chart1->BottomAxis->Title->Caption = "Y TESTTES ";[/align]
[align=left] Chart1->Title->Text->Strings[0] = "hi";[/align]
[align=left] for (int i = 1; i <= 12; i )[/align]
[align=left] {[/align]
[align=left] Chart1->Series[0]->AddXY(i , i);[/align]
[align=left] } [/align]
[align=left]在各种图形之间切换[/align]
[align=left]首先 delete Chart1->Series[0] 删除原来的图形对象,再重新生成,如:[/align]
[align=left] delete Chart1->Series[0];[/align]
[align=left] Chart1->AddSeries(new TBarSeries(Chart1));[/align]
[align=left] Chart1->View3D = true;[/align]
[align=left] Chart1->TopAxis->Title->Caption = "X TEST TEST";[/align]
[align=left] Chart1->BottomAxis->Title->Caption = "Y TESTTES ";[/align]
[align=left] for (int i = 1; i <= 12; i )[/align]
[align=left] {[/align]
[align=left] Chart1->Series[0]->AddXY(i , i);[/align]
[align=left] }【全文结束】[/align]
delphi中TeeChart的各种属性
TeeChart使用指南
TeeChart控件介绍
TeeChart Pro ActiveX是西班牙Steema SL公司开发的图表类控件,主要用来生成各种复杂的图表。熟悉Delphi和C++ Builder的编程人员对它不会陌生,因为在Delphi和C++ Builder里包括了TeeChart的VCL版本。
TeeChart使用目的
如果你需要在程序中制作曲线图、条状图、饼状图等等,使用这个控件都将是你的明智选择。它因为是已经被封装好的产品,所以使用方便,可控性强,不过有的时候会有点小BUG。最好能找到源码,并自己打几个补丁。
TeeChart名词解释
Series
Axis
Scales
Line
Bar
Pie
TeeChart配置说明
ChartSeries(序列) : 在一个图表中可以有一个或多个序列,每个序列可以有不同的显示类型,如Line、Bar、Pie等等。
Add… 添加新的序列
Fast Line(TFastLineSeries简单曲线图)、
Line(TLineSeries 3D曲线图)、
Bar(TBarSeries竖条状图)、
Horiz. Bar(THorizBarSeries横条状图)
Area(TAreaSeries 区域图)、
Point(TPointSeries 点状图)、
Pie(TPieSeries 饼状图)、
Shape(TChartShape 实体图)、
Gantt(TGanttSeries 甘特图)、
Arrow(TArrowSeries 箭头图)、
Bubble(TBubbleSeries 泡泡图)
SeriesFormat:修改序列的格式
SeriesPoint:修改序列中点的样子
SeriesGeneral:对序列的配置,包括Axis,Legend,Formats,Cursor。
SeriesMarks:是否显示序列中每个点的值。
SeriesData Source:数据源。可以采用No Data,Random Values,Function。
Title… 修改序列的名称。
Change… 修改序列的类型,可以从Line改变成Bar或者Pie。
ChartGeneral:一些基本的参数设置。
Print Priview…:打印及打印预览
Export…:输出
Margins:页边空白
Allow Zoom:允许缩放
Animated Zoom:缩放过程是否是动态的,还是一次成功。(如果图的点太多时,可以打开这个功能)
Allow Scroll:滚动条
ChartAxis : 控制图表坐标轴(上、下、左、右、深)的属性
Show Axis:是否显示坐标轴
ChartAxisScales:调整坐标轴的比例
Automatic:可以自动处理最大与最小值,也可以手工设置。
Change…:可以自动处理增量,也可以手工设置。
Logarithmic:对数的
Inverted:反向的
ChartAxisTitle:设置坐标轴的标题
Title:标题
Angle:标题的角度
Size:标题的宽度
Font…:标题的字体
ChartAxisLabels:设置坐标轴的标签
Titles :
ChartLegend(图例):图表中的一个长方形的用来显示图例标注的区域。可以标注Series的名称或者Series中的项目和数值。
Visible
Back Color
Font
Frame
Position
Margin
Legend Style
Text Style
Resize Chart
Inverted
%Top Pos
%Color Width
Dividing Lines…
Shadow
ChartPanel (面板):Panel可以设置图表的背景。可以使用渐变的颜色或者图像文件作为整个图表的背景
Bevel Inner (Bevel Innner ) Width
Bevel Outer (Bevel Outer) Width
Back Image:图表的背景图
Style:(Stretch伸展, Tile瓦片, Center居中)
Inside:只显示在背后壁上
Panel Color:Panel的Inner的颜色
Border:给控件加边界
Gradient(梯度):梯度显示颜色
Visible、Start Color…、End Color…、
Direction(方向):上下、左右、从中间
ChartPaging :图表有几页组成
Points Per Page(每页显示几个点):0为所有的点显示在一页,其他按数字处理。
Scale Last Page:最后一页按比例显示,使之充满整个图表。
ChartWalls(壁)
Left Walls:Y轴的平面
Bottom Walls:X轴的平面
Back Walls:背后的平面
Pattern…(模式):=(Solid实心,None无,Horizontal竖条纹,Vertical横条纹,
Diagonal对角线,Back.Diagonal反向对角线,Cross十字线,DiagonalCross对角十字线);
Border…(边线):=(Solid实线, Dash划线, Dot点,
Dash Dot线点, Dash Dot Dot线点点, Small Dots小点)
Transparent (透明)
Chart3D
3Dimensions(维):是否3维显示
Orthogonal(直角的):3维显示为直角显示,则Elevation,Rotaion,Perspective被屏蔽
ZoomText:坐标数字与图形一起缩放
Zoom:图形的缩放
Rotaion(旋转):关闭Orthogonal后,可以在Y轴上旋转
Elevation(正视图) :关闭Orthogonal后,可以在X轴上旋
Horiz. Offset:在X轴移动图形
Vert. Offset:在Y轴移动图形
Perspective(透视) :关闭Orthogonal后,将焦点沿Z轴移动。
TeeChart使用实例
// AddPages
NewTabSheet := TTabSheet.Create(pgMain);
with NewTabSheet do
begin
Parent := pgMain;
PageControl := pgMain;
Tag := Ord(CountTypeIndex);
Caption := arrCountType[CountTypeIndex];
end;
// AddCharts
NewChart := TChart.Create(NewTabSheet);
with NewChart do
begin
Parent := NewTabSheet;
Title.Text.Add('网间结算' + arrCountType[CountTypeIndex] + '/天分布图');
LeftAxis.Title.Caption := arrCountType[CountTypeIndex];
BottomAxis.Title.Caption := '话单日期';
Legend.Visible := sbLegend.Down;
Legend.Alignment := laBottom;
Legend.LegendStyle := lsSeries;
View3D := sb3D.Down;
Width := NewTabSheet.Width;
Height := NewTabSheet.Height;
end;
// ClearSeries
AChart.Series[SeriesIndex].Free;
// AddSeries
NewSeries := TLineSeries.Create(AChart);
NewSeries.Title := ANameList.Strings[SeriesIndex];
NewSeries.Marks.Visible :=True;
AChart.AddSeries(NewSeries);
// AddNameForSeries
AChart.SeriesList[SeriesIndex].Title:= NewName;
// ShowSeries
AChart.Series[SeriesIndex].Active := True;
// EmptySeries
AChart.Series[SeriesIndex].Clear;
// FillSeries
AChart.Series[SeriesIndex].AddXY();
相关文章推荐
- TChart用法(网络收集)
- TChart用法(网络收集一)
- TChart用法(网络收集一)
- TChart用法(网络收集二)
- TChart用法(网络收集二)
- Mysql的用法.[网络收集]
- [网络收集]控件使用之——Repeater C# 分页用法
- [网络收集]cookie的用法
- TeeChart用法(网络收集)默认分类 2010-03-05 21:46:05 阅读788 评论0 字号:大中小 .
- #define用法[资料收集自网络]
- (转->作者:陈光耀 )Java调用Ant API用法收集
- MFC命名规范(收集自网络,方便查看)
- 网络签名材料收集贴
- MySQL的各种网络IO超时的用法和实现
- 收集的网络上大型的开源图像处理软件代码(提供下载链接)
- 收集并统计网络流量
- ioctl用法详解 (网络)
- 转]网络上收集的Visual Studio 2008的一些小技巧
- List,set,Map 的用法和区别(网络整理)
- 收集的网络资源