Delphi 平滑滚动字符串网格

Delphi 平滑滚动字符串网格,delphi,delphi-xe2,tstringgrid,Delphi,Delphi Xe2,Tstringgrid,我需要一个可以平滑滚动的字符串网格,而不是锁定在顶行/左列位置。滚动TStringGrid时,左侧可见列和顶部可见行沿顶部/左侧边缘对齐。我需要用户能够平滑滚动,而不是将这些边锁定到位 我认为这不可能在VCLTStringGrid(或TCustomGrid)中修改,因为它依赖于属性,例如TopRow,LeftCol,VisibleRowCount,等等。。我很确定我需要一个第三方控件,但是如果可能的话,我很想使用TStringGrid,因为我已经有很多代码包在它周围了。如果我真的需要第三方网格,

我需要一个可以平滑滚动的字符串网格,而不是锁定在顶行/左列位置。滚动
TStringGrid
时,左侧可见列和顶部可见行沿顶部/左侧边缘对齐。我需要用户能够平滑滚动,而不是将这些边锁定到位


我认为这不可能在VCL
TStringGrid
(或
TCustomGrid
)中修改,因为它依赖于属性,例如
TopRow
LeftCol
VisibleRowCount
,等等。。我很确定我需要一个第三方控件,但是如果可能的话,我很想使用
TStringGrid
,因为我已经有很多代码包在它周围了。如果我真的需要第三方网格,那么我希望它能像
TStringGrid

那样工作得足够紧密。简单的回答是不,你不能滚动
TStringGrid
。可以使用
TScrollBox
模拟网格。您可以在
TScrollBox
中放置一个网格,使网格足够大以容纳所有行和列,并关闭其滚动条,但键盘导航之类的功能将无法工作


另一种选择是在网格模式下使用
TVirtualTree
,或
TListView
。两者都有你想要的像素卷轴。

我正在寻找类似的东西。不幸的是,你不能用Borland的代码,但Lazarus可以做到

您可能想看看他们的代码。

我不知道您在这里要求什么。你是说荷丽兹吗。还是垂直滚动?“捕捉到位”或“将这些边锁定到位”是什么意思?我广泛使用了
TStringGrid
,不知道你反对什么行为,也不知道你想问什么。当你垂直或水平滚动时,它一次移动一列/行。但这就是网格的工作方式,例如Excel中使用的网格。网格中的部分数据行没有用处。如果你不希望出现这种行为,那么你使用了错误的控件。FMX网格有一个“动画”属性,它与你似乎要查找的内容相匹配…但是它不是VCL…@KenWhite,这取决于你打算如何使用它。当然,如果只是显示文本,那么第一行就没用了。但是如果列的宽度是控件宽度的3/4,该怎么办?当我滚动时,它会一个单元格一个单元格地跳转,而不是一个像素一个像素地跳转,一个宽的单元格会引起很大的跳转;一个用于行标题,一个用于列标题,另一个用于数据区域。为什么不使用和学习像devexpress这样的专业网格呢?我将尝试一下
TVirtualTree
,但是
TListView
太重了(我没有提到我从
TListView
转到
TStringGrid
是因为在数十万项上的表现)。ExQuantumGrid看起来也很有希望,值得另一个答案。如果性能是一个问题,那么根据您最初的问题,学习使用TVirtualTree是非常值得的。这是范例中的一个机会,但一旦您“获得”了它,它将获得巨大的回报。