不記得是從7.0還是8.0,TeeChart提供了豐富的Tools.
這是一個(gè)純用TeeChart的Tools實(shí)現(xiàn)的簡(jiǎn)易游標(biāo)Demo.

本節(jié)后面會(huì)附上全部源碼.
Clip Series:當(dāng)Series被拖動(dòng)超出了Axis的范圍,則超出的部分不顯示.
Cursor:十字,垂直,水平方向的游標(biāo),可以具體Snap任意Series的相應(yīng)方向上的數(shù)據(jù)點(diǎn).
Drag Marks:可以任意拖動(dòng)位置的Marks.
Drag Point:可以任意移動(dòng)綁定Series的數(shù)據(jù)點(diǎn).
Draw Line:在Chart上畫(huà)線.
Extra Legend:擴(kuò)展Legend,可以在Chart再顯示若干個(gè)Legend.
fibonnaci:斐波那契數(shù)
Gantt Drag:可拖動(dòng)的甘特圖
Image:圖片
Legend Palette:用Series的顏色顯示Legend顏色
Mark Tips:鼠標(biāo)移動(dòng)到Mark上,會(huì)顯示出Hint提示.
Nearest Point:移動(dòng)鼠標(biāo),會(huì)找到離鼠標(biāo)最近的Series上的一點(diǎn).
Pie Slices:移動(dòng)鼠標(biāo)到Pie Slices上,會(huì)高亮被鼠標(biāo)移動(dòng)到的slice.
Region:填充Series和某個(gè)值之間的區(qū)域.
Series Animation:顯示動(dòng)畫(huà),比如柱狀圖從0增加到設(shè)定值.
Series Band:填充2個(gè)Series之間的區(qū)域.
Statistics:統(tǒng)計(jì)資料,可以顯示一個(gè)Series的一些統(tǒng)計(jì)資料.比如平均值,最大值,最小值,多少個(gè)值等等.
Surface Nearest:找到表面最近的點(diǎn),并且高亮.
Axis Arrow:在Axis上添加2個(gè)方向的箭頭,可以進(jìn)行相應(yīng)方向的Scroll操作.
Axis Scroll:可以用鼠標(biāo)直接拖動(dòng)Axis進(jìn)行數(shù)據(jù)范圍的變更.
Color Band:用彩色帶填充Axis區(qū)域的背景顏色.
Color Line:用彩色線(可以允許拖動(dòng))顯示在相應(yīng)Axis的區(qū)域.
Grid Band:用2種顏色帶交替填充相應(yīng)Axis的區(qū)域.
2D Lighting:有點(diǎn)類似探照燈一樣的效果...
3D Grid Transpose:交換3D Series的數(shù)據(jù),行,列.
Annotation:注釋,可以在Chart里任意位置顯示一段文字.
Anti-Alias:平滑線的尖角.
Banner:橫幅,可以實(shí)現(xiàn)滾動(dòng)字.
Data Table:顯示一個(gè)Series的數(shù)據(jù)表格.
Fader:淡入/淡出一個(gè)Chart.
Frame:顯示一個(gè)包圍Chart的框架(相框效果).
Full Screen:將Chart全屏顯示,然后用Alt+F4或者Esc返回.
Legend Scrollbar:Legend的滾動(dòng)條
Link:在Chart里顯示一個(gè)超級(jí)鏈接.
Magnify:一個(gè)可以來(lái)回拖動(dòng)的放大鏡.
Page Number:顯示Chart的當(dāng)前頁(yè)/總頁(yè)數(shù)(也可以提供切換頁(yè)的按鈕).
Rectangle:一個(gè)可以拖動(dòng),可以改變大小的文字顯示框.
Rotate:可以360度任意角度旋轉(zhuǎn)Chart.
Selector:可以設(shè)置選擇任何在Chart中的子組件,比如Title,Series等等.組合Hint,可以顯示出選中的是什么組件.
SubChart:在Chart里再內(nèi)置子Chart.
Text 3D:顯示3D的注釋.
Transpose Series:交換Series的行列.
Video Creator:創(chuàng)建一段Chart圖像的AVI.
Video Player:在Chart里播放AVI.
下面是之前提到的Demo.
dfm文件:
- object Form1: TForm1
- Left = 192
- Top = 190
- Width = 870
- Height = 500
- Caption = 'Form1'
- Color = clBtnFace
- Font.Charset = DEFAULT_CHARSET
- Font.Color = clWindowText
- Font.Height = -11
- Font.Name = 'MS Sans Serif'
- Font.Style = []
- OldCreateOrder = False
- OnCreate = FormCreate
- PixelsPerInch = 96
- TextHeight = 13
- object Button_FillData: TButton
- Left = 744
- Top = 48
- Width = 75
- Height = 25
- Caption = '填充數(shù)據(jù)'
- TabOrder = 0
- OnClick = Button_FillDataClick
- end
- object CheckBox_Cursor: TCheckBox
- Left = 752
- Top = 88
- Width = 57
- Height = 17
- Caption = '游標(biāo)'
- TabOrder = 1
- OnClick = CheckBox_CursorClick
- end
- object CheckBox_LockY: TCheckBox
- Left = 752
- Top = 120
- Width = 97
- Height = 17
- Caption = 'Lock Cursor Y'
- TabOrder = 2
- OnClick = CheckBox_LockYClick
- end
- object Chart1: TChart
- Left = 24
- Top = 32
- Width = 681
- Height = 409
- Title.Text.Strings = (
- 'TChart')
- TabOrder = 3
- end
- end
pas文件:
- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- TeEngine, Series, StdCtrls, ExtCtrls, TeeProcs, Chart, TeeTools;
-
- type
- TForm1 = class(TForm)
- Button_FillData: TButton;
- CheckBox_Cursor: TCheckBox;
- CheckBox_LockY: TCheckBox;
- Chart1: TChart;
- procedure Button_FillDataClick(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure CheckBox_CursorClick(Sender: TObject);
- private
- { Private declarations }
- FFLS1, FFLS2: TFastLineSeries;
- FCursorTool: TCursorTool;
- FAnnotationTool: TAnnotationTool;
- procedure CursorChange(Sender:TCursorTool; x,y:Integer;
- Const XValue,YValue:Double;
- Series:TChartSeries;
- ValueIndex:Integer);
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.DFM}
-
- procedure TForm1.Button_FillDataClick(Sender: TObject);
- begin
- FFLS1.FillSampleValues(20);
- FFLS2.FillSampleValues(20);
- end;
- const
- LabelInv = 10;
-
- procedure TForm1.CursorChange(Sender: TCursorTool; x, y: Integer;
- const XValue, YValue: Double; Series: TChartSeries; ValueIndex: Integer);
- var
- Str: string;
- TmpX, TmpY: Integer;
- begin
- FAnnotationTool.Visible := False;
- if not Assigned(Series) then
- Exit;
- if Series.XValues.Count <= 0 then
- Exit;
- Str := Format('X Value = %.2f', [XValue]) + #13#10
- + Format('%s YValue = %.2f',[FFLS1.Title, FFLS1.YValues[ValueIndex]]) + #13#10
- + Format('%s YValue = %.2f',[FFLS2.Title, FFLS2.YValues[ValueIndex]]);
- FAnnotationTool.Text := Str;
- TmpX := x + LabelInv;
- if TmpX + FAnnotationTool.Width > Chart1.ChartRect.Right - LabelInv then
- TmpX := x - FAnnotationTool.Width - LabelInv;
- if CheckBox_LockY.Checked then
- begin
- TmpY := Chart1.ChartRect.Top + LabelInv;
- if TmpY + FAnnotationTool.Height > Chart1.ChartRect.Bottom - LabelInv then
- TmpY := Chart1.ChartRect.Bottom - Height - LabelInv;
- end
- else
- begin
- TmpY := Chart1.GetCursorPos.y + LabelInv;
- if TmpY + FAnnotationTool.Height > Chart1.ChartRect.Bottom - LabelInv then
- TmpY := Chart1.ChartRect.Bottom - FAnnotationTool.Height - LabelInv;
- end;
- if TmpY < Chart1.ChartRect.Top + LabelInv then
- TmpY := Chart1.ChartRect.Top + LabelInv;
- FAnnotationTool.Top := TmpY;
- FAnnotationTool.Left := TmpX;
- FAnnotationTool.Visible := FCursorTool.Visible;
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- //調(diào)整TeeChart屬性
- Chart1.Legend.Visible := True;
- Chart1.Legend.Alignment := laTop;
- Chart1.View3D := False;
- Chart1.Zoom.Allow := False;
- Chart1.AllowPanning := pmNone;
- //創(chuàng)建Series
- if not Assigned(FFLS1) then
- begin
- FFLS1 := TFastLineSeries.Create(Self);
- FFLS1.ParentChart := Chart1;
- FFLS1.Title := 'Test Series 1';
- end;
- if not Assigned(FFLS2) then
- begin
- FFLS2 := TFastLineSeries.Create(Self);
- FFLS2.ParentChart := Chart1;
- FFLS2.Title := 'Test Series 2';
- end;
- //創(chuàng)建Tools
- FCursorTool := TCursorTool.Create(Chart1);
- FCursorTool.ParentChart := Chart1;
- FCursorTool.Active := False;
- FCursorTool.Pen.Color := clRed;
- FCursorTool.Style := cssVertical;
- FCursorTool.Series := FFLS1;
- FCursorTool.Snap := True;
- FCursorTool.OnChange := CursorChange;
-
- FAnnotationTool := TAnnotationTool.Create(Chart1);
- FAnnotationTool.ParentChart := Chart1;
- FAnnotationTool.Active := False;
- FAnnotationTool.PositionUnits := muPixels;
- FAnnotationTool.Shape.CustomPosition := True;
- FAnnotationTool.Shape.Gradient.Visible := True;
- FAnnotationTool.Shape.Transparency := 30;
- end;
-
- procedure TForm1.CheckBox_CursorClick(Sender: TObject);
- begin
- FCursorTool.Visible := CheckBox_Cursor.Checked;
- FAnnotationTool.Visible := CheckBox_Cursor.Checked;
- end;
-
- end.
慧都2010促銷季開(kāi)幕,TeeChart for .NET 8折促銷!詳情咨詢:400-700-1020或023-66090381,活動(dòng)詳情://fc6vip.cn/zh-CN/Products_cn/TeeChart_chinese.html
標(biāo)簽:
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載