我在谷歌上搜索并找到了很多建议,但这一切似乎都是几年前的事情,而且没有任何帮助。
我有一个包含 8 列的字符串网格,一旦我得到超过几百行,就需要 2 秒以上的时间来填充(我使用 GetTickCount 进行了比较)。
我试过了StringGrid.Perform(WM_SETREDRAW, 0, 0)
(0, 1
最后)。
Visible := False
我在更新时尝试设置。两个都没用。
没有BeginUpdate()
方法。
有什么建议吗?德尔福 XE2 启动器。如果经过试用和测试,我愿意使用 FOSS 3rd 方 VCL 字符串网格。
[更新] 使用 TDrawGrid ...“TDrawGrid 没有属性“单元格”,就像它的兄弟 TStringGrid 一样。您的代码必须计算显示数据的位置,然后它必须在“画布”上绘制数据表示“的网格。”
这对我来说听起来像是很多工作:-(
使用 VirtualTreeView - 如果速度足够快,听起来还可以。我只是没有任何子节点。(update++我刚刚在主页上读到这个“虚拟树视图非常快。添加一百万个节点只需要700毫秒”)。那么速度上没有问题。但是只使用字符串网格会很好。尤其是用户可以单击和排序的地方。
或者,字符串网格只有 20 行高。也许我可以在用户滚动时处理滚动条点击并清除并重新填充这 20 行?
[进一步更新] 我将代码从 TStringGrid 更改为 TListView Beginupdate())
,但这产生的差异可以忽略不计。操作,我忘记了“虚拟模式”-brb。
顺便说一句,数据是只读的,仅用于显示。
当然这是一个非常常见的问题?