TAChart: Add generic mousewheel support for chart tools

git-svn-id: trunk@32641 -
This commit is contained in:
ask 2011-10-03 04:22:27 +00:00
parent 63b271d0c0
commit cca154e0aa
2 changed files with 30 additions and 6 deletions

View File

@ -104,7 +104,8 @@ type
end;
TChartToolEventId = (
evidKeyDown, evidKeyUp, evidMouseDown, evidMouseMove, evidMouseUp);
evidKeyDown, evidKeyUp, evidMouseDown, evidMouseMove, evidMouseUp,
evidMouseWheelDown, evidMouseWheelUp);
{ TBasicChartToolset }
@ -248,16 +249,20 @@ type
procedure VisitSources(
AVisitor: TChartOnSourceVisitor; AAxis: TChartAxis; var AData);
protected
procedure Clear(ADrawer: IChartDrawer; const ARect: TRect);
procedure DisplaySeries(ADrawer: IChartDrawer);
procedure DrawBackWall(ADrawer: IChartDrawer);
procedure KeyDownAfterInterface(var AKey: Word; AShift: TShiftState); override;
procedure KeyUpAfterInterface(var AKey: Word; AShift: TShiftState); override;
function DoMouseWheel(
AShift: TShiftState; AWheelDelta: Integer;
AMousePos: TPoint): Boolean; override;
procedure MouseDown(
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(
AButton: TMouseButton; AShift: TShiftState; AX, AY: Integer); override;
protected
procedure Clear(ADrawer: IChartDrawer; const ARect: TRect);
procedure DisplaySeries(ADrawer: IChartDrawer);
procedure DrawBackWall(ADrawer: IChartDrawer);
procedure KeyDownAfterInterface(var AKey: Word; AShift: TShiftState); override;
procedure KeyUpAfterInterface(var AKey: Word; AShift: TShiftState); override;
{$IFDEF LCLGtk2}
procedure DoOnResize; override;
{$ENDIF}
@ -696,6 +701,17 @@ begin
AxisList.Draw(MaxInt, axisIndex);
end;
function TChart.DoMouseWheel(
AShift: TShiftState; AWheelDelta: Integer; AMousePos: TPoint): Boolean;
const
EV: array [Boolean] of TChartToolEventId = (
evidMouseWheelDown, evidMouseWheelUp);
begin
Result :=
GetToolset.Dispatch(Self, EV[AWheelDelta > 0], AShift, AMousePos) or
inherited DoMouseWheel(AShift, AWheelDelta, AMousePos);
end;
{$IFDEF LCLGtk2}
procedure TChart.DoOnResize;
begin

View File

@ -103,6 +103,10 @@ type
index 3 read GetAfterEvent write SetAfterEvent;
property OnAfterMouseUp: TChartToolEvent
index 4 read GetAfterEvent write SetAfterEvent;
property OnAfterMouseWheelDown: TChartToolEvent
index 5 read GetAfterEvent write SetAfterEvent;
property OnAfterMouseWheelUp: TChartToolEvent
index 6 read GetAfterEvent write SetAfterEvent;
property OnBeforeKeyDown: TChartToolEvent
index 0 read GetBeforeEvent write SetBeforeEvent;
@ -114,6 +118,10 @@ type
index 3 read GetBeforeEvent write SetBeforeEvent;
property OnBeforeMouseUp: TChartToolEvent
index 4 read GetBeforeEvent write SetBeforeEvent;
property OnBeforeMouseWheelDown: TChartToolEvent
index 5 read GetBeforeEvent write SetBeforeEvent;
property OnBeforeMouseWheelUp: TChartToolEvent
index 6 read GetBeforeEvent write SetBeforeEvent;
end;
{$IFNDEF fpdoc} // Workaround for issue #18549.