mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 14:09:16 +02:00
TAChart: Extract TDataPointDrawTool basic class.
Based on patch by Werner Pamler git-svn-id: trunk@37865 -
This commit is contained in:
parent
355ce3cab8
commit
1a835d8a6b
@ -428,36 +428,51 @@ type
|
|||||||
read FUseDefaultHintText write FUseDefaultHintText default true;
|
read FUseDefaultHintText write FUseDefaultHintText default true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TDataPointCrosshairTool = class;
|
{ TDataPointDrawTool }
|
||||||
|
|
||||||
TChartCrosshairDrawEvent = procedure (
|
TDataPointDrawTool = class;
|
||||||
ASender: TDataPointCrosshairTool) of object;
|
|
||||||
|
|
||||||
TChartCrosshairShape = (ccsNone, ccsVertical, ccsHorizontal, ccsCross);
|
TChartDataPointDrawEvent = procedure (ASender: TDataPointDrawTool) of object;
|
||||||
|
|
||||||
TDataPointCrosshairTool = class(TDataPointTool)
|
TDataPointDrawTool = class(TDataPointTool)
|
||||||
strict private
|
strict private
|
||||||
FCrosshairPen: TChartPen;
|
FOnDraw: TChartDataPointDrawEvent;
|
||||||
FOnDraw: TChartCrosshairDrawEvent;
|
strict protected
|
||||||
FPosition: TDoublePoint;
|
FPen: TChartPen;
|
||||||
FShape: TChartCrosshairShape;
|
procedure DoDraw; virtual;
|
||||||
FSize: Integer;
|
procedure DoHide; virtual;
|
||||||
procedure DoDraw;
|
procedure SetPen(AValue: TChartPen);
|
||||||
procedure DoHide;
|
|
||||||
procedure SetCrosshairPen(AValue: TChartPen);
|
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
procedure Draw(AChart: TChart; ADrawer: IChartDrawer); override;
|
procedure Draw(AChart: TChart; ADrawer: IChartDrawer); override;
|
||||||
procedure Hide;
|
procedure Hide; virtual;
|
||||||
procedure KeyDown(APoint: TPoint); override;
|
procedure KeyDown(APoint: TPoint); override;
|
||||||
|
published
|
||||||
|
property DrawingMode;
|
||||||
|
property GrabRadius default 20;
|
||||||
|
property OnDraw: TChartDataPointDrawEvent read FOnDraw write FOnDraw;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TChartCrosshairShape = (ccsNone, ccsVertical, ccsHorizontal, ccsCross);
|
||||||
|
|
||||||
|
{ TDataPointCrossHairTool }
|
||||||
|
|
||||||
|
TDataPointCrosshairTool = class(TDataPointDrawTool)
|
||||||
|
strict private
|
||||||
|
FPosition: TDoublePoint;
|
||||||
|
FShape: TChartCrosshairShape;
|
||||||
|
FSize: Integer;
|
||||||
|
strict protected
|
||||||
|
procedure DoDraw; override;
|
||||||
|
procedure DoHide; override;
|
||||||
|
public
|
||||||
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
procedure Draw(AChart: TChart; ADrawer: IChartDrawer); override;
|
||||||
procedure MouseMove(APoint: TPoint); override;
|
procedure MouseMove(APoint: TPoint); override;
|
||||||
property Position: TDoublePoint read FPosition;
|
property Position: TDoublePoint read FPosition;
|
||||||
published
|
published
|
||||||
property CrosshairPen: TChartPen read FCrosshairPen write SetCrosshairPen;
|
property CrosshairPen: TChartPen read FPen write SetPen;
|
||||||
property DrawingMode;
|
|
||||||
property GrabRadius default 20;
|
|
||||||
property OnDraw: TChartCrosshairDrawEvent read FOnDraw write FOnDraw;
|
|
||||||
property Shape: TChartCrosshairShape
|
property Shape: TChartCrosshairShape
|
||||||
read FShape write FShape default ccsCross;
|
read FShape write FShape default ccsCross;
|
||||||
property Size: Integer read FSize write FSize default -1;
|
property Size: Integer read FSize write FSize default -1;
|
||||||
@ -1513,19 +1528,73 @@ begin
|
|||||||
FUseApplicationHint := AValue;
|
FUseApplicationHint := AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TDataPointDrawTool }
|
||||||
|
|
||||||
|
constructor TDataPointDrawTool.Create(AOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
GrabRadius := 20;
|
||||||
|
FPen := TChartPen.Create;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TDataPointDrawTool.Destroy;
|
||||||
|
begin
|
||||||
|
FreeAndNil(FPen);
|
||||||
|
inherited;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataPointDrawTool.DoDraw;
|
||||||
|
begin
|
||||||
|
if Assigned(OnDraw) then
|
||||||
|
OnDraw(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataPointDrawTool.DoHide;
|
||||||
|
begin
|
||||||
|
case EffectiveDrawingMode of
|
||||||
|
tdmXor: begin
|
||||||
|
PrepareXorPen(FChart.Canvas);
|
||||||
|
DoDraw;
|
||||||
|
end;
|
||||||
|
tdmNormal:
|
||||||
|
FChart.StyleChanged(Self);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataPointDrawTool.Draw(AChart: TChart; ADrawer: IChartDrawer);
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
case EffectiveDrawingMode of
|
||||||
|
tdmXor:
|
||||||
|
PrepareXorPen(FChart.Canvas);
|
||||||
|
tdmNormal:
|
||||||
|
FChart.Drawer.Pen := FPen;
|
||||||
|
end;
|
||||||
|
DoDraw;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataPointDrawTool.Hide;
|
||||||
|
begin
|
||||||
|
DoHide;
|
||||||
|
FChart := nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataPointDrawTool.KeyDown(APoint: TPoint);
|
||||||
|
begin
|
||||||
|
MouseMove(APoint);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDataPointDrawTool.SetPen(AValue: TChartPen);
|
||||||
|
begin
|
||||||
|
FPen.Assign(AValue);
|
||||||
|
end;
|
||||||
|
|
||||||
{ TDataPointCrosshairTool }
|
{ TDataPointCrosshairTool }
|
||||||
|
|
||||||
constructor TDataPointCrosshairTool.Create(AOwner: TComponent);
|
constructor TDataPointCrosshairTool.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
SetPropDefaults(Self, ['Shape', 'Size']);
|
SetPropDefaults(Self, ['Shape', 'Size']);
|
||||||
FCrosshairPen := TChartPen.Create;
|
|
||||||
end;
|
|
||||||
|
|
||||||
destructor TDataPointCrosshairTool.Destroy;
|
|
||||||
begin
|
|
||||||
FreeAndNil(FCrosshairPen);
|
|
||||||
inherited;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDataPointCrosshairTool.DoDraw;
|
procedure TDataPointCrosshairTool.DoDraw;
|
||||||
@ -1543,46 +1612,20 @@ begin
|
|||||||
FChart.DrawLineHoriz(FChart.Drawer, p.Y)
|
FChart.DrawLineHoriz(FChart.Drawer, p.Y)
|
||||||
else
|
else
|
||||||
FChart.Drawer.Line(p - Point(Size, 0), p + Point(Size, 0));
|
FChart.Drawer.Line(p - Point(Size, 0), p + Point(Size, 0));
|
||||||
if Assigned(OnDraw) then
|
inherited;
|
||||||
OnDraw(Self);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDataPointCrosshairTool.DoHide;
|
procedure TDataPointCrosshairTool.DoHide;
|
||||||
begin
|
begin
|
||||||
if FSeries = nil then exit;
|
if FSeries = nil then exit;
|
||||||
FSeries := nil;
|
FSeries := nil;
|
||||||
case EffectiveDrawingMode of
|
inherited;
|
||||||
tdmXor: begin
|
|
||||||
PrepareXorPen(FChart.Canvas);
|
|
||||||
DoDraw;
|
|
||||||
end;
|
|
||||||
tdmNormal:
|
|
||||||
FChart.StyleChanged(Self);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDataPointCrosshairTool.Draw(AChart: TChart; ADrawer: IChartDrawer);
|
procedure TDataPointCrosshairTool.Draw(AChart: TChart; ADrawer: IChartDrawer);
|
||||||
begin
|
begin
|
||||||
if FSeries = nil then exit;
|
if FSeries = nil then exit;
|
||||||
inherited;
|
inherited;
|
||||||
case EffectiveDrawingMode of
|
|
||||||
tdmXor:
|
|
||||||
PrepareXorPen(FChart.Canvas);
|
|
||||||
tdmNormal:
|
|
||||||
FChart.Drawer.Pen := CrosshairPen;
|
|
||||||
end;
|
|
||||||
DoDraw;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TDataPointCrosshairTool.Hide;
|
|
||||||
begin
|
|
||||||
DoHide;
|
|
||||||
FChart := nil;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TDataPointCrosshairTool.KeyDown(APoint: TPoint);
|
|
||||||
begin
|
|
||||||
MouseMove(APoint);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDataPointCrosshairTool.MouseMove(APoint: TPoint);
|
procedure TDataPointCrosshairTool.MouseMove(APoint: TPoint);
|
||||||
@ -1597,10 +1640,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDataPointCrosshairTool.SetCrosshairPen(AValue: TChartPen);
|
|
||||||
begin
|
|
||||||
FCrosshairPen.Assign(AValue);
|
|
||||||
end;
|
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user