方法一:
于Form或ScrollBox的MouseWheel事件中添加如下代码:
if WheelDelta <0 then
scrollbox1.Perform(WM_VSCROLL,SB_LINEDOWN,0)
else
scrollbox1.Perform(WM_VSCROLL,SB_LINEUP,0);
方法二:
procedure Tfrmperson.ScrollBox1MouseWheelDown(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
SendMessage(scrollbox1.Handle,WM_VSCROLL,SB_LINEDOWN,0);
end;
procedure Tfrmperson.ScrollBox1MouseWheelUp(Sender: TObject;
Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
SendMessage(scrollbox1.Handle,WM_VSCROLL,SB_LINEUP,0);
end;
---------------------------------------------------------------------
procedure ScrollBox1MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure ScrollBox1MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); private procedure getmouse(var msg:TWMMouseWheel);message WM_MouseWheel; { Private declarations } procedure TForm1.ScrollBox1MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); var posi:integer; begin posi := ScrollBox1.vertScrollBar.Position - 25 ; if ScrollBox1.vertScrollBar.Position < 0 then posi := 0; ScrollBox1.vertScrollBar.Position := posi; end; procedure TForm1.ScrollBox1MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin ScrollBox1.vertScrollBar.Position := ScrollBox1.vertScrollBar.Position + 25 ; end; procedure TForm1.getmouse(var msg:TWMMouseWheel); begin ScrollBox1.SetFocus ; end; 网友补充: 只要scrollBox能获取焦点就可以。 在scrollBox的onMouseMove上设置焦点。 然后在scrollBox的onMouseWhell中: scrollBox1.Scrollby(0,WheelDelta);
--------------------------------------------------------------------------
procedure TfrmMain.sbPropMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin with sbProp.VertScrollBar do begin if ScrollPos<Range then Position:=Position+10; end; Handled:=True; end; procedure TfrmMain.sbPropMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin with sbProp.VertScrollBar do begin if ScrollPos>0 then Position:=Position-10; end; Handled:=True; end; procedure TForm1.ScrollBox1MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin scrollbox1.VertScrollBar.Position := scrollbox1.VertScrollBar.Position 30 ; //scrollbox1.HorzScrollBar.Position := scrollbox1.HorzScrollBar.Position 30 ; end; procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin scrollbox1.VertScrollBar.Position := scrollbox1.VertScrollBar.Position + 30 ; end; procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin scrollbox1.VertScrollBar.Position := scrollbox1.VertScrollBar.Position -30 ; end; 还可以看看这里 http://bbs.2ccc.com/topic.asp?topicid=160380 要不就用消息 procedure TJC_FangShuiJi_HNTForm.sb_SYSJMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin //鼠标下滚动 with sb_SYSJ.VertScrollBar do begin if ScrollPos <Range then Position:=Position+30; end; Handled:=True; end; //------------------------------------------------------------------------------ procedure TJC_FangShuiJi_HNTForm.sb_SYSJMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin //鼠标上滚动 with sb_SYSJ.VertScrollBar do begin if ScrollPos> 0 then Position:=Position-30; end; Handled:=True; end;
----------------------------------------------------------------
我自己的总结的方案:

贴上代码:
procedure TfrmMain.ScrollBox1MouseEnter(Sender: TObject); begin ScrollBox1.SetFocus;//这个事件可能不对,可能不是onenter事件,但是目前没有发现更好的事件,而这个时间又可以满足,以后再深入研究 end; procedure TfrmMain.ScrollBox1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin if WheelDelta <0 then begin ScrollBox1.Perform(WM_VSCROLL,SB_LINEDOWN,0); end else begin ScrollBox1.Perform(WM_VSCROLL,SB_LINEUP,0); end; end;
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/archive/2012/07/02/2572412.html
浙公网安备 33010602011771号