TAChart: Add TDataPointDragTool.EscapeCancels property

git-svn-id: trunk@38864 -
This commit is contained in:
ask 2012-09-27 15:21:54 +00:00
parent adf12d0ef5
commit dba262b42f

View File

@ -42,6 +42,7 @@ type
FActiveCursor: TCursor; FActiveCursor: TCursor;
FDrawingMode: TChartToolDrawingMode; FDrawingMode: TChartToolDrawingMode;
FEnabled: Boolean; FEnabled: Boolean;
FEscapeCancels: Boolean;
FEventsAfter: array [TChartToolEventId] of TChartToolEvent; FEventsAfter: array [TChartToolEventId] of TChartToolEvent;
FEventsBefore: array [TChartToolEventId] of TChartToolEvent; FEventsBefore: array [TChartToolEventId] of TChartToolEvent;
FOldCursor: TCursor; FOldCursor: TCursor;
@ -61,6 +62,7 @@ type
read FDrawingMode write SetDrawingMode default tdmDefault; read FDrawingMode write SetDrawingMode default tdmDefault;
strict protected strict protected
procedure Activate; override; procedure Activate; override;
procedure Cancel; virtual;
procedure Deactivate; override; procedure Deactivate; override;
function EffectiveDrawingMode: TChartToolEffectiveDrawingMode; function EffectiveDrawingMode: TChartToolEffectiveDrawingMode;
function GetIndex: Integer; override; function GetIndex: Integer; override;
@ -76,6 +78,8 @@ type
procedure RestoreCursor; procedure RestoreCursor;
procedure SetCursor; procedure SetCursor;
procedure SetIndex(AValue: Integer); override; procedure SetIndex(AValue: Integer); override;
property EscapeCancels: Boolean
read FEscapeCancels write FEscapeCancels default false;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
@ -409,6 +413,8 @@ type
FOnDrag: TDataPointDragEvent; FOnDrag: TDataPointDragEvent;
FOnDragStart: TDataPointDragEvent; FOnDragStart: TDataPointDragEvent;
FOrigin: TDoublePoint; FOrigin: TDoublePoint;
strict protected
procedure Cancel; override;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
procedure MouseDown(APoint: TPoint); override; procedure MouseDown(APoint: TPoint); override;
@ -417,6 +423,7 @@ type
property Origin: TDoublePoint read FOrigin; property Origin: TDoublePoint read FOrigin;
published published
property ActiveCursor default crSizeAll; property ActiveCursor default crSizeAll;
property EscapeCancels default true;
property OnDrag: TDataPointDragEvent read FOnDrag write FOnDrag; property OnDrag: TDataPointDragEvent read FOnDrag write FOnDrag;
property OnDragStart: TDataPointDragEvent property OnDragStart: TDataPointDragEvent
read FOnDragStart write FOnDragStart; read FOnDragStart write FOnDragStart;
@ -543,7 +550,7 @@ var
implementation implementation
uses uses
GraphMath, InterfaceBase, Math, SysUtils, GraphMath, InterfaceBase, LCLType, LCLIntf, Math, SysUtils,
TACustomSeries, TAEnumerators, TAGeometry, TAMath; TACustomSeries, TAEnumerators, TAGeometry, TAMath;
function InitBuiltinTools(AChart: TChart): TBasicChartToolset; function InitBuiltinTools(AChart: TChart): TBasicChartToolset;
@ -638,6 +645,11 @@ begin
inherited Assign(Source); inherited Assign(Source);
end; end;
procedure TChartTool.Cancel;
begin
// Empty.
end;
constructor TChartTool.Create(AOwner: TComponent); constructor TChartTool.Create(AOwner: TComponent);
begin begin
inherited Create(AOwner); inherited Create(AOwner);
@ -742,6 +754,8 @@ end;
procedure TChartTool.KeyDown(APoint: TPoint); procedure TChartTool.KeyDown(APoint: TPoint);
begin begin
Unused(APoint); Unused(APoint);
if EscapeCancels and ((GetKeyState(VK_ESCAPE) and $8000) <> 0) then
Cancel;
end; end;
procedure TChartTool.KeyUp(APoint: TPoint); procedure TChartTool.KeyUp(APoint: TPoint);
@ -1522,10 +1536,20 @@ end;
{ TDataPointDragTool } { TDataPointDragTool }
procedure TDataPointDragTool.Cancel;
begin
if FSeries <> nil then
FSeries.MovePoint(FPointIndex, Origin);
if IsActive then
Deactivate;
Handled;
end;
constructor TDataPointDragTool.Create(AOwner: TComponent); constructor TDataPointDragTool.Create(AOwner: TComponent);
begin begin
inherited Create(AOwner); inherited Create(AOwner);
ActiveCursor := crSizeAll; ActiveCursor := crSizeAll;
EscapeCancels := true;
end; end;
procedure TDataPointDragTool.MouseDown(APoint: TPoint); procedure TDataPointDragTool.MouseDown(APoint: TPoint);