我想让 TDBGrid 滚动“更平滑”以滚动页面而不是逐行(数据集光标)。
我知道导航发生在数据集上,而不是在视觉网格中。
发现这个旧帖子可以通过垂直滚动条工作,但不适用于鼠标滚轮滚动。
更接近的是这篇文章。
滚动是通过 DBGrid 和 OnMouseWheel 完成的:
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;
当我使用内部自定义网格组件(与 TDBGrid 非常相似)时,我已经完成了一个使用滚动条事件(垂直和水平)和鼠标滚轮事件的解决方案,因此我自己处理滚动,跳过 Vcl 公共滚动。
通过这种方式,我能够模拟基于 Web 的网格,该网格在具有移位状态时水平滚动,甚至无需触摸数据集光标。