在Delphi中滚动时查看DBGrid中的位置

时间:2008-12-02 21:29:05

标签: delphi scroll dbgrid

我在表单上有一个DBGrid。 DBGrid有许多列,因此会显示水平滚动条。我向右滚动DBGrid视图以查看更多列。如果我选择一行,DBGrid视图会自动重置以查看第一列(就像我向后滚动到最左侧的位置一样)。

有没有办法防止这种情况?

2 个答案:

答案 0 :(得分:7)

我假设您在网格选项中有 goRowSelect 。这会强制选定的col作为第一个非固定列,因此每当行更改代码以将选定单元格滚动到视图中时,强制第一个非固定列可见。

由于 goRowSelect 也有效地禁用了键盘的水平滚动,我试着没有它。您可以使用网格单元格的自定义绘图来显示当前行的所有单元格,并为所选单元格显示正确的颜色,即使实际上只选择了一个单元格。我也使用它来显示不同的颜色,具体取决于网格是否聚焦,类似于标准树控件的功能。为了使其正常工作,您不仅需要处理网格单元导航事件,还需要处理其他一些事件,例如网格的 OnEnter OnExit OnActivate OnDeactivate 应用程序,依此类推。

答案 1 :(得分:2)

您可以要求滚动条位置

GetScrollInfo(Self.Handle, SB_VERT, SIOld);

并使用SetScrollInfo( )将其放回原处。可能有更好的方法。 SelectedField是另一种方式(根据需要获取/设置)。

相关问题