方法一:
于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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人