TDBGrid 平滑滚动

问题描述 投票:0回答:2

我想让 TDBGrid 滚动“更平滑”以滚动页面而不是逐行(数据集光标)。

我知道导航发生在数据集上,而不是在视觉网格中。

发现这个旧帖子可以通过垂直滚动条工作,但不适用于鼠标滚轮滚动。

更接近的是这篇文章

delphi scroll dataset mousewheel dbgrid
2个回答
0
投票

滚动是通过 DBGridOnMouseWheel 完成的:

procedure TForm1.DBGridMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: integer; MousePos: TPoint; var Handled: Boolean);
begin
  Handled := true;
        
  if WheelDelta < 0 then
    DBGrid.DataSource.DataSet.MobeBy(3)
  else 
    DBGrid.DataSource.DataSet.MobeBy(-3);
end;

0
投票

当我使用内部自定义网格组件(与 TDBGrid 非常相似)时,我已经完成了一个使用滚动条事件(垂直和水平)和鼠标滚轮事件的解决方案,因此我自己处理滚动,跳过 Vcl 公共滚动。

通过这种方式,我能够模拟基于 Web 的网格,该网格在具有移位状态时水平滚动,甚至无需触摸数据集光标。

© www.soinside.com 2019 - 2024. All rights reserved.