不记得是从7.0还是8.0,TeeChart提供了丰富的Tools.
这是一个纯用TeeChart的Tools实现的简易游标Demo.

本节后面会附上全部源码.
Clip Series:当Series被拖动超出了Axis的范围,则超出的部分不显示.
Cursor:十字,垂直,水平方向的游标,可以具体Snap任意Series的相应方向上的数据点.
Drag Marks:可以任意拖动位置的Marks.
Drag Point:可以任意移动绑定Series的数据点.
Draw Line:在Chart上画线.
Extra Legend:扩展Legend,可以在Chart再显示若干个Legend.
fibonnaci:斐波那契数
Gantt Drag:可拖动的甘特图
Image:图片
Legend Palette:用Series的颜色显示Legend颜色
Mark Tips:鼠标移动到Mark上,会显示出Hint提示.
Nearest Point:移动鼠标,会找到离鼠标最近的Series上的一点.
Pie Slices:移动鼠标到Pie Slices上,会高亮被鼠标移动到的slice.
Region:填充Series和某个值之间的区域.
Series Animation:显示动画,比如柱状图从0增加到设定值.
Series Band:填充2个Series之间的区域.
Statistics:统计资料,可以显示一个Series的一些统计资料.比如平均值,最大值,最小值,多少个值等等.
Surface Nearest:找到表面最近的点,并且高亮.
Axis Arrow:在Axis上添加2个方向的箭头,可以进行相应方向的Scroll操作.
Axis Scroll:可以用鼠标直接拖动Axis进行数据范围的变更.
Color Band:用彩色带填充Axis区域的背景颜色.
Color Line:用彩色线(可以允许拖动)显示在相应Axis的区域.
Grid Band:用2种颜色带交替填充相应Axis的区域.
2D Lighting:有点类似探照灯一样的效果...
3D Grid Transpose:交换3D Series的数据,行,列.
Annotation:注释,可以在Chart里任意位置显示一段文字.
Anti-Alias:平滑线的尖角.
Banner:横幅,可以实现滚动字.
Data Table:显示一个Series的数据表格.
Fader:淡入/淡出一个Chart.
Frame:显示一个包围Chart的框架(相框效果).
Full Screen:将Chart全屏显示,然后用Alt+F4或者Esc返回.
Legend Scrollbar:Legend的滚动条
Link:在Chart里显示一个超级链接.
Magnify:一个可以来回拖动的放大镜.
Page Number:显示Chart的当前页/总页数(也可以提供切换页的按钮).
Rectangle:一个可以拖动,可以改变大小的文字显示框.
Rotate:可以360度任意角度旋转Chart.
Selector:可以设置选择任何在Chart中的子组件,比如Title,Series等等.组合Hint,可以显示出选中的是什么组件.
SubChart:在Chart里再内置子Chart.
Text 3D:显示3D的注释.
Transpose Series:交换Series的行列.
Video Creator:创建一段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 = '填充数据'
- TabOrder = 0
- OnClick = Button_FillDataClick
- end
- object CheckBox_Cursor: TCheckBox
- Left = 752
- Top = 88
- Width = 57
- Height = 17
- Caption = '游标'
- 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
- //调整TeeChart属性
- Chart1.Legend.Visible := True;
- Chart1.Legend.Alignment := laTop;
- Chart1.View3D := False;
- Chart1.Zoom.Allow := False;
- Chart1.AllowPanning := pmNone;
- //创建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;
- //创建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促销季开幕,TeeChart for .NET 8折促销!详情咨询:400-700-1020或023-66090381,活动详情://wqylolg.cn/zh-CN/Products_cn/TeeChart_chinese.html
标签:
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn
文章转载自:网络转载