TeeChart用法(网络收集)默认分类 2010-03-05 21:46:05 阅读788 评论0 字号:大中小 .
生活随笔
收集整理的這篇文章主要介紹了
TeeChart用法(网络收集)默认分类 2010-03-05 21:46:05 阅读788 评论0 字号:大中小 .
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
TeeChart用法(網(wǎng)絡(luò)收集)
默認(rèn)分類 2010-03-05 21:46:05 閱讀788 評(píng)論0 字號(hào):大中小
1、TChart Hello world 放一個(gè)控件到窗體上,然后寫代碼加入一個(gè)折線數(shù)據(jù)序列: var Series: TLineSeries; begin Series := TLineSeries.Create(Chart1); Series.Add(100, '頭部', clRed); Series.Add(200, '頸部', clGreen); Chart1.AddSeries(Series); end; 這樣就會(huì)生成一個(gè)簡單的折線圖表,要生成其它類型的數(shù)據(jù)圖表,可以添加不同的數(shù)據(jù)序列(各種圖表的序列類型可以參考幫助文檔)。 2.如何設(shè)置圖表的標(biāo)題? TChart組件提供了Title屬性可以這是圖表的標(biāo)題,包括標(biāo)題的內(nèi)容、字體、對(duì)齊方式等都可以通過Title屬性設(shè)置。 最簡單的設(shè)置方式: Chart1.Title.Text.Text := '圖表的標(biāo)題'; 3.如何修改圖表的背景顏色和整個(gè)圖表的顏色? TChart是一個(gè)窗體控件,可以通過修改Color屬性設(shè)置圖表顏色,這是一種最簡單的方式: Chart1.Color := clWhite; 修改圖表部分的背景色可以通過BackColor屬性來實(shí)現(xiàn): 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屬性控制是否顯示左側(cè)的3D墻效果 5.如何不顯示圖表控件生成圖表? 很遺憾,TChart是一個(gè)Windows窗體控件,必須依附一個(gè)窗體或Windows控件才能使用。如果要不顯示TChart的話,可以將TChart的Visible屬性設(shè)為False來使用。下面的例子創(chuàng)建了一個(gè)隱藏的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; TChart使用經(jīng)驗(yàn)小結(jié) ? 1、問題:通過Addxy方法給TChart添加標(biāo)記(Mark)時(shí),發(fā)現(xiàn)在TChart的橫坐標(biāo)會(huì)隨著Mark而變化,后來發(fā)現(xiàn)通過以下方法可避免這種情況:雙擊TChart,點(diǎn)擊Axis-> top or bottom ->labels,在styles中將labels的形式改為Value即可! 2、幾個(gè)有用的屬性:??????? 圖表上的每個(gè)點(diǎn)都是有索引的,就象一個(gè)數(shù)組一樣,在OnClickSeries事件中有個(gè)ValueIndex屬性,該屬性可以得到鼠標(biāo)所點(diǎn)擊的點(diǎn)的索引值(必須將Series的Point設(shè)置為可見,鼠標(biāo)點(diǎn)擊到那個(gè)點(diǎn)時(shí)才可以觸發(fā)該事件)。 xValue[index]、yValue[index]分別表示圖表的索引為index的橫縱坐標(biāo)值,用這兩個(gè)屬性可以讀取和設(shè)置索引為index的點(diǎn)的值,注意:不要用xValues和yValues,這兩個(gè)屬性也可以達(dá)到同樣的目的,但是速度非常的慢。因?yàn)楹髢蓚€(gè)在進(jìn)行操作的時(shí)候可能要遍歷整個(gè)圖表上的值(個(gè)人觀點(diǎn)) 在MouseDown,MouseMove,Mouseup中,可以利用xScreentoValue(x),yScreentoValue(y)得到鼠標(biāo)當(dāng)時(shí)所在點(diǎn)對(duì)應(yīng)在圖表上的橫縱坐標(biāo)值。 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; 這里即實(shí)現(xiàn)了可以在圖表中拖動(dòng)某一個(gè)點(diǎn)使其在縱軸上變化位置 1.4????? [問題極其使用技巧] 1.4.1??????????? TChart中如何實(shí)現(xiàn)只有Y軸的放大與縮小功能? 設(shè)置BottomAxis或者LeftAxis的Automatic:=false并同時(shí)設(shè)置Minimum,Maximum屬性 1.4.2??????????? 如何固定TChart中的坐標(biāo),不使TChart中的坐標(biāo)跟隨Series的變化而變化? //設(shè)置底座標(biāo) with myChart.BottomAxis do begin Automatic:=false; Minimum:=0; LabelStyle := talText; end; //設(shè)置左坐標(biāo) 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; //設(shè)置右坐標(biāo) with myChart.RightAxis do begin Automatic:=false; Title.Font:=Self.Font; Title.Font.Charset:=ANSI_CHARSET; Title.Font.Name:='@宋體'; Title.Caption:='累計(jì)百分比(%)'; Maximum:=100; Minimum:=0; end; 1.4.3??????????? 如何刪除一個(gè)圖形中的一個(gè)點(diǎn)? 使用Series的delete 方法 1.4.4??????????? 如何修改一個(gè)點(diǎn)的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??????????? 如果橫坐標(biāo)是時(shí)間(日期),如何進(jìn)行設(shè)置? {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中畫出的曲線某個(gè)點(diǎn)上標(biāo)記出該點(diǎn)的值? Series.Marks.Visible:=true; Series.Marks.Style:=smsValue; 1.4.7??????????? 如何設(shè)置橫軸或者縱軸的增長率? Chart.BottomAxis.Increment := DataTimeStep[ dtOneHour ] ; Chart.RightAxis.Increment := 1000; 1.4.8??????????? 如何對(duì)圖象進(jìn)行縮放? TChart的ZoomRect或者ZoomPercent方法 (Pie圖可能不支持縮放)? 1.5????? [TChart可以繪制的圖形] 1.5.1??????????? Line ( TLineSeries) 1.5.2????FastLine (TFastLineSeries) 相對(duì)Line來說,它損耗了某些屬性從而來實(shí)現(xiàn)快速繪制 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的實(shí)時(shí)繪制]? 實(shí)時(shí)繪制對(duì)機(jī)器性能要求比較高,因此我們在編程的時(shí)候要注意下面幾個(gè)方面: ü???????? 使用2D圖形 ü???????? 是Chart盡可能包含少的點(diǎn) ü???????? 如果需要,可以移除(remove)chart的legend(?????)和Title ü???????? 使用默認(rèn)的字體和字體大小 ü???????? 使用FastLineSeries ü???????? 使用實(shí)體(solid)畫筆和畫刷格式 ü???????? 盡量避免使用圓形和環(huán)行bar樣式 ü???????? 不要使用背景圖片和漸變效果樣式 ü???????? 把Chart的BevelInner和BevelOUter屬性設(shè)置為bcNone ü???????? 如果需要,把TChart的AxisVisible屬性設(shè)置為False ü???????? 把BufferedDisplay設(shè)置為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中的全局變量] 1.9???????????? ü???????? TeeScrollMouseButton := mbRight;設(shè)置鼠標(biāo)右鍵為TChart滾動(dòng)鍵(默認(rèn)) ü???????? TeeScrollKeyShift??? := [ ssCtrl ]; 要按住Control鍵才可以使Scroll滾動(dòng) 1.9????? [TChartSerries使用技巧] 1.9.1??????????? 運(yùn)行時(shí)候創(chuàng)建一個(gè)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數(shù)組,也有三種方法 1.MySeries := Chart1.SeriesList [ 0 ] 2.MySeries := Chart1.Series [ 0 ] 3.MySeries := Chart1 [ 0 ] 1.9.3??????????? SerriesCount屬性獲得SeriesList中Series的個(gè)數(shù) 1.9.4??????????? 隱藏TChart中的Series有三種方法,但是效果不等價(jià) 1.? Series1.Active:=False; 僅僅隱藏,當(dāng)設(shè)置為true的時(shí)候還可以顯示出來 2.? Series1.ParentChart:=nil ; 隱藏,重新設(shè)置ParentChart為TChart時(shí)候可以顯示 3.? Series1.Free; 刪除了Series. 不可以恢復(fù) 1.9.5??????????? TChart中的數(shù)據(jù)排序 With Series1 do begin YValues.Order:=loAscending; YValues.Sort; Repaint; end; ????????? 定位一個(gè)點(diǎn)(Loacate a point) Series1.XValues.Locate(123); ????????? XValue和YValue都擁有的屬性Total , TotalABS , MaxValue , MinValue
delphi中TeeChart的各種屬性 ? TeeChart使用指南
TeeChart控件介紹
TeeChart?? Pro?? ActiveX是西班牙Steema?? SL公司開發(fā)的圖表類控件,主要用來生成各種復(fù)雜的圖表。熟悉Delphi和C++?? Builder的編程人員對(duì)它不會(huì)陌生,因?yàn)樵贒elphi和C++?? Builder里包括了TeeChart的VCL版本。
TeeChart使用目的
如果你需要在程序中制作曲線圖、條狀圖、餅狀圖等等,使用這個(gè)控件都將是你的明智選擇。它因?yàn)槭且呀?jīng)被封裝好的產(chǎn)品,所以使用方便,可控性強(qiáng),不過有的時(shí)候會(huì)有點(diǎn)小BUG。最好能找到源碼,并自己打幾個(gè)補(bǔ)丁。
TeeChart名詞解釋
Series
Axis
Scales
Line
Bar
Pie
TeeChart配置說明
Chart?Series(序列)?? :?? 在一個(gè)圖表中可以有一個(gè)或多個(gè)序列,每個(gè)序列可以有不同的顯示類型,如Line、Bar、Pie等等。
Add…?? 添加新的序列
Fast?? Line(TFastLineSeries簡單曲線圖)、
Line(TLineSeries?? 3D曲線圖)、
Bar(TBarSeries豎條狀圖)、
Horiz.?? Bar(THorizBarSeries橫條狀圖)
Area(TAreaSeries?? 區(qū)域圖)、
Point(TPointSeries?? 點(diǎn)狀圖)、
Pie(TPieSeries?? 餅狀圖)、
Shape(TChartShape?? 實(shí)體圖)、
Gantt(TGanttSeries?? 甘特圖)、
Arrow(TArrowSeries?? 箭頭圖)、
Bubble(TBubbleSeries?? 泡泡圖)
Series?Format:修改序列的格式
Series?Point:修改序列中點(diǎn)的樣子
Series?General:對(duì)序列的配置,包括Axis,Legend,Formats,Cursor。
Series?Marks:是否顯示序列中每個(gè)點(diǎn)的值。
Series?Data?? Source:數(shù)據(jù)源??梢圆捎肗o?? Data,Random?? Values,Function。
Title…?? 修改序列的名稱。
Change…?? 修改序列的類型,可以從Line改變成Bar或者Pie。
Chart?General:一些基本的參數(shù)設(shè)置。
Print?? Priview…:打印及打印預(yù)覽
Export…:輸出
Margins:頁邊空白
Allow?? Zoom:允許縮放
Animated?? Zoom:縮放過程是否是動(dòng)態(tài)的,還是一次成功。(如果圖的點(diǎn)太多時(shí),可以打開這個(gè)功能)
Allow?? Scroll:滾動(dòng)條
Chart?Axis?? :?? 控制圖表坐標(biāo)軸(上、下、左、右、深)的屬性
Show?? Axis:是否顯示坐標(biāo)軸
Chart?Axis?Scales:調(diào)整坐標(biāo)軸的比例
Automatic:可以自動(dòng)處理最大與最小值,也可以手工設(shè)置。
Change…:可以自動(dòng)處理增量,也可以手工設(shè)置。
Logarithmic:對(duì)數(shù)的
Inverted:反向的
Chart?Axis?Title:設(shè)置坐標(biāo)軸的標(biāo)題
Title:標(biāo)題
Angle:標(biāo)題的角度
Size:標(biāo)題的寬度
Font…:標(biāo)題的字體
Chart?Axis?Labels:設(shè)置坐標(biāo)軸的標(biāo)簽
Titles?? :???
Chart?Legend(圖例):圖表中的一個(gè)長方形的用來顯示圖例標(biāo)注的區(qū)域??梢詷?biāo)注Series的名稱或者Series中的項(xiàng)目和數(shù)值。
Visible
Back?? Color
Font
Frame
Position
Margin
Legend?? Style
Text?? Style
Resize?? Chart
Inverted
%Top?? Pos
%Color?? Width???
Dividing?? Lines…
Shadow
Chart?Panel?? (面板):Panel可以設(shè)置圖表的背景。可以使用漸變的顏色或者圖像文件作為整個(gè)圖表的背景
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(方向):上下、左右、從中間
??
Chart?Paging?? :圖表有幾頁組成
Points?? Per?? Page(每頁顯示幾個(gè)點(diǎn)):0為所有的點(diǎn)顯示在一頁,其他按數(shù)字處理。
Scale?? Last?? Page:最后一頁按比例顯示,使之充滿整個(gè)圖表。
??
Chart?Walls(壁)
Left?? Walls:Y軸的平面
Bottom?? Walls:X軸的平面
Back?? Walls:背后的平面
Pattern…(模式):=(Solid實(shí)心,None無,Horizontal豎條紋,Vertical橫條紋,
Diagonal對(duì)角線,Back.Diagonal反向?qū)蔷€,Cross十字線,DiagonalCross對(duì)角十字線);
Border…(邊線):=(Solid實(shí)線,?? Dash劃線,?? Dot點(diǎn),???
Dash?? Dot線點(diǎn),?? Dash?? Dot?? Dot線點(diǎn)點(diǎn),?? Small?? Dots小點(diǎn))
Transparent?? (透明)
??
Chart?3D
3Dimensions(維):是否3維顯示
Orthogonal(直角的):3維顯示為直角顯示,則Elevation,Rotaion,Perspective被屏蔽
ZoomText:坐標(biāo)數(shù)字與圖形一起縮放
Zoom:圖形的縮放
Rotaion(旋轉(zhuǎn)):關(guān)閉Orthogonal后,可以在Y軸上旋轉(zhuǎn)
Elevation(正視圖)?? :關(guān)閉Orthogonal后,可以在X軸上旋
Horiz.?? Offset:在X軸移動(dòng)圖形
Vert.?? Offset:在Y軸移動(dòng)圖形
Perspective(透視)?? :關(guān)閉Orthogonal后,將焦點(diǎn)沿Z軸移動(dòng)。
??
TeeChart使用實(shí)例
//?? 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('網(wǎng)間結(jié)算'?? +?? 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();??
總結(jié)
以上是生活随笔為你收集整理的TeeChart用法(网络收集)默认分类 2010-03-05 21:46:05 阅读788 评论0 字号:大中小 .的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作者:冯仕政(1974-),男,中国人民
- 下一篇: 【2016年第1期】农业大数据资产管理面