2012-08-17 70 views
2

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

我不认为这是可能的VCL TStringGrid修改(或TCustomGrid对于这个问题),因为它依赖于性能,如TopRowLeftColVisibleRowCount等。我敢肯定,我需要一个第三方控件,但如果可能的话,我很乐意使用TStringGrid,因为我已经有很多代码缠绕它了。如果我确实需要第三方网格,那么我希望它能像TStringGrid一样紧密合作。

+0

我不知道你在这里要求什么。你在谈论水平吗?或垂直滚动​​? “卡入到位”意味着什么,或者“将这些边缘锁定到位”?我广泛使用了'TStringGrid',并且不知道你反对什么行为或者你想在这里问什么。 – 2012-08-17 01:10:45

+0

当您垂直或水平滚动时,它一次移动一列/一行。 – 2012-08-17 02:21:40

+0

但这就是网格的工作方式,例如Excel中使用的那些。网格中的部分数据行没有用处。如果你不想要这种行为,那么你正在使用错误的控件。 – 2012-08-17 02:25:46

回答

6

简单的答案是否定的,你不容像素滚动TStringGrid。您可以使用TScrollBox来模拟网格。您可以在TScrollBox中放置一个网格,使网格足够大以适应所有行和列,并关闭其滚动条,但某些事情(如键盘导航)不起作用。

其它替代方案是在网格模式或TListView使用TVirtualTree。都有这个像素滚动你想要的。

+1

在一个滚动框中放置一个字符串网格时,您需要3个字符串网格;一个用于行标题,一个用于列标题,另一个用于数据区域。 – NGLN 2012-08-17 04:43:15

+3

为什么不使用和学习像devexpress的proffessional网格http://www.devexpress.com/Products/VCL/ExQuantumGrid。 – 2012-08-17 05:10:36

+0

我给了'TVirtualTree'了一枪,但'TListView'是太沉重(我没提到我从'TListView'到'TStringGrid'上的项目成千上万的移动因业绩)。 ExQuantumGrid看起来也很有希望,值得另一个答案。 – 2012-08-17 15:27:48