TScrollBox响应鼠标滚轮问题

时间:2023-03-08 20:03:31

Delphi的TScrollBox本身并不响应鼠标滚轮事件(不知道为什么),但可以在ScrollBox的鼠标滚动事件中进行控制:

procedure TfrmTaskNoteEdit.ScrollBox1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer;
MousePos: TPoint; var Handled: Boolean);
begin
if WheelDelta < then
SendMessage(scrollBox1.Handle,WM_VSCROLL, SB_LINEDOWN, ) //向下滚
else
SendMessage(scrollBox1.Handle,WM_VSCROLL, SB_LINEUP, ); //向上滚
end;

测试通过,奇怪的是我在一个PageControl的两个页面中分别放置两个ScrollBox时只有一个有响应,郁闷,后来只好调整到窗体的MouseWheel事件中:

procedure TfrmTaskNoteEdit.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
var Handled: Boolean);
begin
inherited;
case RzPageControl1.ActivePageIndex of
:
begin
if WheelDelta < then
ScrollBox1.Perform(WM_VSCROLL,SB_LINEDOWN,)
else
ScrollBox1.Perform(WM_VSCROLL,SB_LINEUP,);
end;
:
begin
if WheelDelta < then
ScrollBox2.Perform(WM_VSCROLL,SB_LINEDOWN,)
else
ScrollBox2.Perform(WM_VSCROLL,SB_LINEUP,);
end;
end;
end;