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

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


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

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

 

相关文章:

  • 2022-12-23
  • 2021-08-19
  • 2021-07-31
  • 2021-11-24
  • 2022-02-08
  • 2021-12-19
猜你喜欢
  • 2022-02-18
  • 2021-12-12
  • 2021-12-13
  • 2022-12-23
  • 2022-12-23
  • 2021-11-27
  • 2021-09-28
相关资源
相似解决方案