【发布时间】:2015-03-14 13:35:31
【问题描述】:
我正在使用 TScrollBox 使自定义列表包含许多控件(Tlabels、Timages、Tshapes)
问题是当我使用 TPanels 作为每个项目的容器时,添加大约 100 个项目后列表变得缓慢和闪烁。
我正在寻找基于 TGraphicControl 的 TPanel 的替代品以提高性能
【问题讨论】:
-
您可以创建一个
TGraphicControl后代,它将使用某种虚拟对象(如图层)。您将拥有一个虚拟对象定义列表(对象大小、位置、文本、形状......),并且只要任何定义发生更改,您就会通过这些定义渲染到屏幕外位图。剩下的就是对屏幕外位图进行 blitting。 -
没有任何基于 TGraphicControl 的控件可以作为其他控件的父级。
-
@TLama 这是个好主意,但我使用带有面板和控件的 TScrollbox 而不是 TListView,以便能够处理使用此方法无法实现的每个控件上的事件
-
也许您可以使用 TFrame 而不是 TScrollBox。我有一些包含接近 1000 个控件的 TFrame,并且 TFrame 滚动良好。我使用 TGroupBoxes 将 TFrame 分成几个部分。
-
为什么需要容器?
标签: delphi delphi-2010 flicker tpanel tscrollbox