Teechart圖表應(yīng)用技術(shù)詳解—第三章之序列的維護(hù)(上)
Steema公司和慧都科技針對中國市場聯(lián)合推出中文版TeeChart for .NET圖表控件,一共漢化2000個詞條(17000個單詞),漢化文檔35000個單詞,包括控件設(shè)計時與運行時的界面漢化以及控件使用向?qū)臋n的漢化,總漢化90%以上!
TeeChart for .NET中文版讓您在使用和學(xué)習(xí)上沒有任何語言障礙,至少可以節(jié)省30%的開發(fā)時間。TeeChart for .NET中文版具有易上手,使用方便,穩(wěn)定性好,性價比高,價格優(yōu)惠等優(yōu)勢,并且針對Web應(yīng)用提供無限制服務(wù)器分發(fā)授權(quán)方式,非常有利于產(chǎn)品集成。
運行期間創(chuàng)建序列
運行時創(chuàng)建序列和創(chuàng)建其他 Delphi組件是一樣的,首先需要定義序列變量,然后創(chuàng)建序列,并指定該序列所屬的Chart:
Var MySeries TBarSeries; Myseries:TBarSeries.Create(Self); MySeries.ParentChart:Chart1;
現(xiàn)在可以給序列增加點,其他操作與設(shè)計階段操作是一樣的。如果不需要訪問序列,以上代碼可以壓縮到一行:
Chart1.AddSeries(TBarSeries Create(Self));
`或者可以通過一個序列類進(jìn)行引用:
Var Myclass:TChartSeriesClass; //聲明一個序列類變量 Myclass:=TBarseries; //設(shè)置序列類的類型 Chart1.AddSeries(Myc1ass.Create(se1f)); //創(chuàng)建序列類組件
上述三種方法之一都可完成序列的創(chuàng)建任務(wù)。
序列列表、計數(shù)與刪除
圖表組件在SeriesList屬性中保存了所有的序列, SeriesList是一個 Delphi的TList對象,這個屬性是只讀,可以通過下列方法之一訪問。
使用SeriesList屬性:
MySeries:=Chart1 SeriesList [0]
使用序列數(shù)組屬性:
MySeries Chart1 Series [0]
使用Chart的默認(rèn)屬性:
MySeries :=Chart1[0]
SeriesCount屬性返回SeriesList屬性中序列的個數(shù),下面代碼可以列舉Chart的所有序列:
for t =0 to Chart1. SeriesCount -1 do With Chart1.Series[ t] do begin SeriesColor:=c1Blue; end;
可以通過下列任一方法刪除序列:
設(shè)置序列的 Active屬性:
Series1. Active:=False;
從圖表組件中移出:
Series. ParentChart:=nil;
銷毀序列實例:
Series1.Free;
運行時改變序列的Z順序
在3D模式(當(dāng)Chart1.View3D=True時)中,所有序列都被賦予一個在Z順序中的位置,也就是說序列在3D空間中從最遠(yuǎn)的序列繪制。使用下列方法可以變換Z順序以重新繪制:
Chart1.ExchangeSeries(0,1);
或者
Chart1.SeriesUp(Series1); Chart1.SeriesDown(Series1);
這時 Series.ZOrder屬性返回序列對應(yīng)Z序列中的一個位置。
增加序列的點
任一類型的序列在每個點至少有兩個值即點的X、Y坐標(biāo),這個值是Double型的浮點數(shù)。擴(kuò)展型序列具有兩個以上的值,像BubbleSeries序列每個點有X、Y和Radiusvalues(半徑)三個值。每個序列都有各自增加點的方法,像Line、Bar、 Point、Area都用 AddY方法增加點。下面的代碼是清空一個序列后再增加兩個點:
Series1.Clear; Series. Add(1234, 'USA', c1Blue); Series1. Add (2001, 'Europe', c1Red );
對于擴(kuò)展型序列需要使用各自增加點的方法序列的 AddArray方法也可以用來增加點,AddArrayo在增加點前不清除序列。
Series3.Clear; Series3.AddArray([1234,2001,4567.12);
增加數(shù)組中的數(shù)據(jù)
為了將數(shù)組的數(shù)據(jù)增加到圖表的序列中,可采用下列方法實現(xiàn)
procedure TDynArrays.Button1Click(Sender:Tobject ); Var X, Y: Array of Double; //TChartValues t:Integer; Nun:Integer; begin Num:=StrToInt(Edit1.Text); //使用編輯框設(shè)置數(shù)組的大小 SetLength(X,Num); //設(shè)定數(shù)組的大小 SetLength(X,Num); X[0]:=0; Y[0]:=Random(10000); for t:=1 to Num-1 do //數(shù)組賦值 begin X[t]:=t; Y[t]:=Y[t-1]+Random(101)-50; end; With Series. XValues do //設(shè)置X數(shù)組 begin Value:=TChartValues(X); //數(shù)組 Count:=Num; //點數(shù) Modified:=True; //重新計算min和Max end; With Series1.Yvalues do //設(shè)置Y數(shù)組 begin Value:=TChartValues(Y); Count:= Num; Modified:=True; end; Chart1.UndoZoom; //取消放大操作 Series1.Repaint; //重繪以顯示數(shù)據(jù) 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的值進(jìn)行任意排序, Series.XValues和 Series.Yvalues的Order屬性可以控制點的順序:
Series1.XValues.Order:=loAscending;
Order屬性的取值是loNone,loAscending或loDescending。默認(rèn)狀態(tài)下XValues的Order設(shè)為 loAscending, YValues的Order設(shè)為loNone,這意味著新增加的點按它們的X坐標(biāo)進(jìn)行排序,對于非XY的圖表,X坐標(biāo)點的位置總是從零開始。點的排序由序列組件重畫它的點。
注意:必須在點增加以前就要設(shè)置為排序。
可以在運行期間改變排序Order屬性。下面的代碼調(diào)用了排序方法,如:
拖到TChart組件到Form中,并增加 TLineSeries序列。
增加TButton按鈕,并在 Button1Click事件中添加下列代碼。
Series1.AddArray([ 5, 2,3,9]);
再增加一個TButton按鈕,并在Button2Click事件中添加代碼。
With Series1 do begin YValues.Order:=loAscending; YValues.Sort; Repaint; End;
現(xiàn)在,單擊Button1按鈕填充Series1,單擊Button2看到Series1的點按YValues做升序排列,但Ⅹ坐標(biāo)沒有改變。
另外,一個圖表組件中可以有多少條序列和一個序列中可以有多少個點與組件本身無關(guān),而與機(jī)器的內(nèi)存多少有關(guān)。
下一節(jié)我們將會介紹第三章圖表與序列的操作維護(hù):序列的維護(hù)(下)。如果有對Teechart圖表感興趣的朋友,可以多多關(guān)注本教程,并且歡迎在評論區(qū)留言。
相關(guān)資料推薦:
上一章:圖表軸的維護(hù)
現(xiàn)TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在線訂購,現(xiàn)在搶購可立享優(yōu)惠!
關(guān)注慧聚IT微信公眾號???,了解產(chǎn)品的最新動態(tài)及最新資訊。