翻譯|使用教程|編輯:況魚杰|2019-10-28 13:59:28.157|閱讀 410 次
概述:本教程轉自屈景輝的Teechart應用技術詳解——快速圖表制作工具一書,本文將會介紹此書的第三章圖表與序列的操作維護的第二小節:序列的維護(上)。將會介紹運行期間如何創建序列,序列列表、技術與刪除、運行時如何改變序列的Z順序,以及如何增加序列的點等部分。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
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圖表感興趣的朋友,可以多多關注本教程,并且歡迎在評論區留言。
相關資料推薦:
上一章:圖表軸的維護
現TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在線訂購,現在搶購可立享優惠!
關注慧聚IT微信公眾號???,了解產品的最新動態及最新資訊。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: