关于TChart的问题(急~!!)(50分)

  • 主题发起人 主题发起人 ccniao
  • 开始时间 开始时间
C

ccniao

Unregistered / Unconfirmed
GUEST, unregistred user!
我用TLineSeries在TChart中画点成线,得到一曲线
现在我想实现单击TChart,即生成一条竖线与曲线相交得到一个点
再把与这个点最近的实际数据的点找出来
本来下面的过程差不多已经实现了,但得单击Series才能用
而我要实现单击Chart也能用(没分了不好意思:))
procedure TForm1.Chart1ClickSeries(Sender: TCustomChart;
Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
XFieldValue,YFieldValue : Double; // 最近的数据点对应的字段值
vx,vy:double;// 鼠标位置对应于X,Y轴上的坐标值

begin
Series.GetCursorValues(vX,vY);
XFieldValue := Series.XValues[ValueIndex];
YFieldValue := Series.YValues[ValueIndex];
label1.Caption:=floattostr(yfieldvalue);
end;
 
你直接使用TeeChart的工具Cursor和Drag Marks应该能够实现你的功能吧
 
能不能具体点?
我很菜的.
 
采用过程
procedure ChartTool1Change(Sender: TCursorTool; x, y: Integer;
const XValue, YValue: Double; Series: TChartSeries;
ValueIndex: Integer);
 
在编辑时加Tools Cursor
Tools -> add -> Cursor 然后进行简单设置。
在使用过程 procedure ChartTool1Change(Sender: TCursorTool; x, y: Integer;
const XValue, YValue: Double; Series: TChartSeries;
ValueIndex: Integer);
别的应该一样了
 
我的上面找不到这个过程啊~~~
TeeChart和TChart是不是一回事?
 
TChart也是TeeChart,只是版本低一点,我看看delphi自带的TChart有没有这个功能
 
那个TeeChart也是delphi自带的吗?在哪个页里?
 
哈哈,delphi自带的TChart没有Tools这个功能。
 
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
TeEngine, Series, ExtCtrls, TeeProcs, Chart;

procedure TForm1.Chart1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ccp :TChartClickedPart;
begin
Chart1.CalcClickedPart(Point(X,Y), ccp);
end;

ccp里面就是你点的那个Series。
 
TeeChart不是自带的,你到网上下载一个嘛,带源吗的,现在最高好像是6.X
 
恩 好的
Chart1.CalcClickedPart(Point(X,Y), ccp); //这句什么意思啊
 
TeeChart比delphi自带的TChart功能强大很多,你自己看着办吧。没什么问题的话,我要下线了。明天再说
 
Description
Use this method to return information about the TeeChart component below the Mouse pointer at an X,Y location.

Example
The following code sets the cursor to 'Hand' when over a TeeChart Title component.

procedure TTitleClickEvent.Chart1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var P : TChartClickedPart;

begin
Chart1.CalcClickedPart(Point(x,y),P);
Case P.Part of
cpTitle,cpFoot,
cpSubTitle,cpSubFoot: Chart1.Cursor:=crHandPoint;
else
Chart1.Cursor:=crDefault;
end;
Chart1.OriginalCursor:=Chart1.Cursor;
end;
 
接受答案了.
 
faint,我竟然一点分都没有。
 
后退
顶部