LCL: implemented MouseWheel handler for treeview (fixes issue #13002)

scroll whole lines when scrolling vertically as indicated in comment.

git-svn-id: trunk@18346 -
This commit is contained in:
vincents 2009-01-19 21:29:10 +00:00
parent d8953c73cb
commit 8b26a74894
2 changed files with 18 additions and 4 deletions

View File

@ -2312,11 +2312,13 @@ type
procedure Delete(Node: TTreeNode); dynamic;
procedure DestroyWnd; override;
procedure DoEndDrag(Target: TObject; X, Y: Integer); override;
procedure DragOver(Source: TObject; X,Y: Integer; State: TDragState;
var Accept: Boolean); override;
function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint): Boolean; override;
procedure DoPaint; virtual;
procedure DoPaintNode(Node: TTreeNode); virtual;
procedure DoStartDrag(var DragObject: TDragObject); override;
procedure DragOver(Source: TObject; X,Y: Integer; State: TDragState;
var Accept: Boolean); override;
procedure EndEditing;
procedure EnsureNodeIsVisible(ANode: TTreeNode);
procedure Expand(Node: TTreeNode); dynamic;

View File

@ -3965,6 +3965,18 @@ begin
FLastDropTarget := nil;
end;
function TCustomTreeView.DoMouseWheel(Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint): Boolean;
begin
Result:=inherited DoMouseWheel(Shift, WheelDelta, MousePos);
if not Result then
begin
ScrolledTop := ScrolledTop -
(WheelDelta * Mouse.WheelScrollLines * DefaultItemHeight) div 120;
Result := true;
end;
end;
function TCustomTreeView.DoDragMsg(ADragMessage: TDragMessage; APosition: TPoint; ADragObject: TDragObject; ATarget: TControl; ADocking: Boolean):LRESULT;
begin
Result:=inherited;
@ -4767,8 +4779,8 @@ begin
SB_TOP: ScrolledTop := 0;
SB_BOTTOM: ScrolledTop := GetMaxScrollTop;
// Scrolls one line up / down
SB_LINEDOWN: ScrolledTop := ScrolledTop + FDefItemHeight div 2;
SB_LINEUP: ScrolledTop := ScrolledTop - FDefItemHeight div 2;
SB_LINEDOWN: ScrolledTop := ScrolledTop + FDefItemHeight;
SB_LINEUP: ScrolledTop := ScrolledTop - FDefItemHeight;
// Scrolls one page of lines up / down
SB_PAGEDOWN: ScrolledTop := ScrolledTop + (ClientHeight-ScrollBarWidth)
- FDefItemHeight;