Steema公司和慧都科技针对中国市场联合推出中文版TeeChart for .NET图表控件,一共汉化2000个词条(17000个单词),汉化文档35000个单词,包括控件设计时与运行时的界面汉化以及控件使用向导文档的汉化,总汉化90%以上!

TeeChart for .NET中文版让您在使用和学习上没有任何语言障碍,至少可以节省30%的开发时间。TeeChart for .NET中文版具有易上手,使用方便,稳定性好,性价比高,价格优惠等优势,并且针对Web应用提供无限制服务器分发授权方式,非常有利于产品集成。


运行期间创建序列

运行时创建序列和创建其他 Delphi组件是一样的,首先需要定义序列变量,然后创建序列,并指定该序列所属的Chart:

Var MySeries TBarSeries;
Myseries:TBarSeries.Create(Self);
MySeries.ParentChart:Chart1;

现在可以给序列增加点,其他操作与设计阶段操作是一样的。如果不需要访问序列,以上代码可以压缩到一行:

Chart1.AddSeries(TBarSeries Create(Self));

`或者可以通过一个序列类进行引用:

Var Myclass:TChartSeriesClass;    //声明一个序列类变量
Myclass:=TBarseries;                  //设置序列类的类型
Chart1.AddSeries(Myc1ass.Create(se1f));   //创建序列类组件

上述三种方法之一都可完成序列的创建任务。

序列列表、计数与删除

图表组件在SeriesList属性中保存了所有的序列, SeriesList是一个 Delphi的TList对象,这个属性是只读,可以通过下列方法之一访问。

  • 使用SeriesList属性:

MySeries:=Chart1 SeriesList [0]
  • 使用序列数组属性:

MySeries Chart1 Series [0]
  • 使用Chart的默认属性:

MySeries :=Chart1[0]

SeriesCount属性返回SeriesList属性中序列的个数,下面代码可以列举Chart的所有序列:

for t =0 to Chart1. SeriesCount -1 do
With Chart1.Series[ t] do
begin
SeriesColor:=c1Blue;
end;

可以通过下列任一方法删除序列:

  • 设置序列的 Active属性:

Series1. Active:=False;
  • 从图表组件中移出:

Series. ParentChart:=nil;
  • 销毁序列实例:

Series1.Free;

运行时改变序列的Z顺序

在3D模式(当Chart1.View3D=True时)中,所有序列都被赋予一个在Z顺序中的位置,也就是说序列在3D空间中从最远的序列绘制。使用下列方法可以变换Z顺序以重新绘制:

Chart1.ExchangeSeries(0,1);

或者

Chart1.SeriesUp(Series1);
Chart1.SeriesDown(Series1);

这时 Series.ZOrder属性返回序列对应Z序列中的一个位置。

增加序列的点

任一类型的序列在每个点至少有两个值即点的X、Y坐标,这个值是Double型的浮点数。扩展型序列具有两个以上的值,像BubbleSeries序列每个点有X、Y和Radiusvalues(半径)三个值。每个序列都有各自增加点的方法,像Line、Bar、 Point、Area都用 AddY方法增加点。下面的代码是清空一个序列后再增加两个点:

Series1.Clear;
Series. Add(1234, 'USA', c1Blue);
Series1. Add (2001, 'Europe', c1Red );

对于扩展型序列需要使用各自增加点的方法序列的 AddArray方法也可以用来增加点,AddArrayo在增加点前不清除序列。

Series3.Clear;
Series3.AddArray([1234,2001,4567.12);

增加数组中的数据

为了将数组的数据增加到图表的序列中,可采用下列方法实现

procedure TDynArrays.Button1Click(Sender:Tobject );
Var X, Y: Array of Double;                            //TChartValues
       t:Integer;
       Nun:Integer;
begin
Num:=StrToInt(Edit1.Text);               //使用编辑框设置数组的大小
SetLength(X,Num);                                     //设定数组的大小
SetLength(X,Num);     
X[0]:=0;
Y[0]:=Random(10000);
for t:=1 to Num-1 do                               //数组赋值
begin
      X[t]:=t;
      Y[t]:=Y[t-1]+Random(101)-50;
end;
With Series. XValues do               //设置X数组
begin
       Value:=TChartValues(X);         //数组
Count:=Num;                                        //点数
Modified:=True;                    //重新计算min和Max
end;
With Series1.Yvalues do               //设置Y数组
begin
Value:=TChartValues(Y);
Count:= Num;
Modified:=True;
end;
Chart1.UndoZoom;                   //取消放大操作
Series1.Repaint;                   //重绘以显示数据
end;

空值

有时指定的点可能没有值,但可以使它作为Zero或 Null。Null值将不显示,而Zero通常是显示的。下面的代码作用是增加几个点和一个空点:

With Series1 do
begin
Clear;
AddY(10,'John', c1Green );
AddY (20,'Anne';c1Yellow);
AddY(15, 'Thomas',c1Red );
AddNull('Peter');
AddY(25, 'Tony', c1Blue );
AddY (20, 'Mike',c1Lime );

不同序列类型处理空值的方法是不一样的。棒图、横向棒图、线条图、面积图和点图不显示空点,而饼型图空值用Zero显示。

点的顺序控制和限制

点可以按X或Y的值进行任意排序, Series.XValues和 Series.Yvalues的Order属性可以控制点的顺序:

Series1.XValues.Order:=loAscending;

Order属性的取值是loNone,loAscending或loDescending。默认状态下XValues的Order设为 loAscending, YValues的Order设为loNone,这意味着新增加的点按它们的X坐标进行排序,对于非XY的图表,X坐标点的位置总是从零开始。点的排序由序列组件重画它的点。

注意:必须在点增加以前就要设置为排序。

可以在运行期间改变排序Order属性。下面的代码调用了排序方法,如:

  • 拖到TChart组件到Form中,并增加 TLineSeries序列。

  • 增加TButton按钮,并在 Button1Click事件中添加下列代码。

Series1.AddArray([ 5, 2,3,9]);
  • 再增加一个TButton按钮,并在Button2Click事件中添加代码。

With Series1 do
begin
YValues.Order:=loAscending;
YValues.Sort;
Repaint;
End;

现在,单击Button1按钮填充Series1,单击Button2看到Series1的点按YValues做升序排列,但Ⅹ坐标没有改变。

另外,一个图表组件中可以有多少条序列和一个序列中可以有多少个点与组件本身无关,而与机器的内存多少有关。

下一节我们将会介绍第三章图表与序列的操作维护:序列的维护(下)。如果有对Teechart图表感兴趣的朋友,可以多多关注本教程,并且欢迎在评论区留言。