我什么时候应该使用VirtualTree的BeginSynch vs BeginUpdate?



我们从 1 年开始将 VirtualTreeView v5.5.3 与 Delphi7 一起使用,并且喜欢它!

我们希望充分发挥组件的潜力,但帮助文件中只有少量关于BeginSynch方法的信息。

BeginUpdate + EndUpdate相比,什么时候应该使用BeginSynch + EndSynch

哪一个应该嵌套到另一个中?

在哪种情况下可以使用什么方法?(SortScrollIntoViewMoveToNodeHeightisVisible[], ...在绘画之前对操作进行分组以加快应用程序的速度?

据我了解,它们具有不同的,几乎相反的目的,对于您的用例,您需要BeginUpdate

当您想要进行大量更新并且不希望在此过程中发生重绘等时,通常会调用BeginUpdate。许多控件,包括TListBox和TDBGrid,都有这种可能性来加速批量更新。

BeginSynch与事件相关,尤其是 OnChange 事件。当您将ChangeDelay属性设置为大于 0 的值时,虚拟树视图可能会触发OnChange事件并带有一些延迟。 这也意味着您可能会错过一些活动。如果快速连续进行两次更改,则可能只获得一个事件,或者可能会比预期晚获得事件。 BeginSynch 将启动一个同步模式,该模式在进行更改后立即触发 OnChange 事件(与更改同步(,覆盖 ChangeDelay 属性。启动此同步模式比保存 ChangeDelay 属性的值并在之后还原它更容易。

因此,在某种程度上,您可以说BeginUpdate和BeginSync在速度方面几乎是相反的,但实际上这只是关于您的用例。对于您的情况("分组操作"(,您肯定会使用BeginUpdate.

在这方面,BeginSynch上的文档可以更清楚一些。它指的是BeginUpdate,因为它是一种类似的机制(进入某种更新模式,具有相关的EndSomething方法(,而实际上它应该指的是功能上与之相关的ChangeDelay。有趣的是,文档底部的"发送反馈"链接实际上并不是一个链接......

相关内容

  • 没有找到相关文章

最新更新