TAChart: Add TDataPointTool.DistanceMode property

git-svn-id: trunk@32078 -
This commit is contained in:
ask 2011-08-28 06:50:47 +00:00
parent 3d47dcc48a
commit 96bc72c285

View File

@ -293,11 +293,14 @@ type
property Margins: TChartMargins read FMargins write FMargins; property Margins: TChartMargins read FMargins write FMargins;
end; end;
TChartDistanceMode = (cdmXY, cdmOnlyX, cdmOnlyY);
{ TDataPointTool } { TDataPointTool }
TDataPointTool = class(TChartTool) TDataPointTool = class(TChartTool)
strict private strict private
FAffectedSeries: String; FAffectedSeries: String;
FDistanceMode: TChartDistanceMode;
FGrabRadius: Integer; FGrabRadius: Integer;
function ParseAffectedSeries: TBooleanDynArray; function ParseAffectedSeries: TBooleanDynArray;
strict protected strict protected
@ -313,6 +316,8 @@ type
property Series: TBasicChartSeries read FSeries; property Series: TBasicChartSeries read FSeries;
published published
property AffectedSeries: String read FAffectedSeries write FAffectedSeries; property AffectedSeries: String read FAffectedSeries write FAffectedSeries;
property DistanceMode: TChartDistanceMode
read FDistanceMode write FDistanceMode default cdmXY;
property GrabRadius: Integer read FGrabRadius write FGrabRadius default 4; property GrabRadius: Integer read FGrabRadius write FGrabRadius default 4;
end; end;
@ -1277,12 +1282,15 @@ begin
end; end;
procedure TDataPointTool.FindNearestPoint(APoint: TPoint); procedure TDataPointTool.FindNearestPoint(APoint: TPoint);
const
DIST_FUNCS: array [TChartDistanceMode] of TPointDistFunc = (
@PointDist, @PointDistX, @PointDistY);
var var
s, bestS: TCustomChartSeries; s, bestS: TCustomChartSeries;
p: TNearestPointParams; p: TNearestPointParams;
cur, best: TNearestPointResults; cur, best: TNearestPointResults;
begin begin
p.FDistFunc := @PointDist; p.FDistFunc := DIST_FUNCS[DistanceMode];
p.FPoint := APoint; p.FPoint := APoint;
p.FRadius := GrabRadius; p.FRadius := GrabRadius;
best.FDist := MaxInt; best.FDist := MaxInt;