我们正在体验Firemonkey的ScrollBox组件中似乎是一个奇怪的错误(因为TGrid
从TScrollBox
它继承也会影响所有网格).在我们的开发机器上,一切正常,而在其他机器上则会发生错误.我们未能检测到系统之间的任何模式(我们检查了操作系统,图形硬件,DirectX版本).
再生产:
TScrollBox
在表格上放置一个.如果发生错误,则该按钮不可见.
使用网格时,这会导致1-19047行正确显示,并且不显示19047及以上的所有行.
有谁知道是什么原因引起的?或者任何想法我们如何更详细地识别问题?
我刚看了一下Firemonkey的网格实现,结果发现它是一个非常简单的实现(只有1800行,对于网格实现来说似乎并不多).它几乎没有自定义绘画,而是聚合了许多其他控件 - 这似乎是Firemonkey的做事方式.
例如,每列保留一组控件 - 每个单元一个.对于具有1,000,000行的普通文本列,网格将在内存中保留1,000,000个编辑控件 - 这对我来说似乎有点疯狂.(编辑:现在不太确定,如果这个假设是正确的.它似乎考虑了细胞的可见性,这可能意味着它确实提供了类似虚拟模式的东西,但我不太确定......)
我的问题:毫无疑问,Firemonkey的这种组件聚合设计看起来简单而优雅,但是它真的可以很好地扩展到必须在网格中显示的数据量吗?我无法想象它在大量行中表现良好.什么是Firemonkey处理大量数据的方式?
感谢您的任何意见.
我正在尝试基于FireMonkey创建我的第一个应用程序,然后我撞墙了.我能找到的唯一虚拟列表控件是tGrid.
这个组件非常好,但我无法弄清楚如何扩展或自定义它.我知道有tCheckbox列,tImage列等,但如果我需要一个ButtonColumn或类似的东西怎么办?
另外,我想基于它所代表的数据的状态来设置一行样式.
示例:如果行中表示的数据具有"Error = True",则应以红色显示.
有人有类似的问题吗?或者找到备用虚拟列表/网格组件?或者甚至只是关于使用tGrid组件的一些提示.这些组件在所有数据库应用程序中都非常重要,因此它应该是一个非常常见的请求
另外,作为一个注释,我不认为TGrid支持拖放行?