我什么时候应该使用 VirtualTree 的 BeginSynch 与 BeginUpdate?
When should I use VirtualTree's BeginSynch vs BeginUpdate?
我们从 1 年开始就在 Delphi7 中使用 VirtualTreeView v5.5.3 并且非常喜欢它!
我们想充分发挥组件的潜力,但帮助文件中关于 BeginSynch
方法的信息很少。
与BeginUpdate + EndUpdate
相比,什么时候应该使用BeginSynch + EndSynch
?
哪个应该嵌套到另一个?
在什么情况下可以使用什么方法? (Sort
、ScrollIntoView
、MoveTo
、NodeHeight
、isVisible[]
、...)在绘画之前对操作进行分组以加速应用程序?
据我了解,它们有不同的、几乎相反的目的,对于您的用例,您需要 BeginUpdate
.
BeginUpdate
通常在您想要执行 lot 更新时调用,并且您不希望在该过程中发生重绘等。许多控件,包括 TListBox 和 TDBGrid,都有可能加快批量更新。
BeginSynch
is related to events, especially the OnChange event. The VirtualTreeView can fire the OnChange
event with some delay when you set the ChangeDelay
属性 为大于 0 的值。
这也意味着您可能会错过一些活动。如果您快速连续地进行两项更改,您可能只会获得一个事件,或者您可能会比预期晚获得该事件。
BeginSynch 将启动一个同步模式,该模式在进行更改后立即(同步)触发 OnChange 事件,覆盖 ChangeDelay 属性。启动此同步模式比保存 ChangeDelay 属性 的值并在之后恢复它更容易。
所以在某种程度上,您可以说 BeginUpdate 和 BeginSync 在速度方面几乎彼此相反,但实际上这只是关于您的用例。对于您的情况 ("grouping manipulations"),您肯定会使用 BeginUpdate
.
BeginSynch 的文档在这方面可能更清楚一些。它指的是 BeginUpdate,因为它是一种类似的机制(进入某种更新模式,具有相关的 EndSomething 方法),而实际上它应该指的是它在功能上相关的 ChangeDelay。同样有趣的是,文档底部的 'Send feedback' link 实际上并不是 link...
我们从 1 年开始就在 Delphi7 中使用 VirtualTreeView v5.5.3 并且非常喜欢它!
我们想充分发挥组件的潜力,但帮助文件中关于 BeginSynch
方法的信息很少。
与BeginUpdate + EndUpdate
相比,什么时候应该使用BeginSynch + EndSynch
?
哪个应该嵌套到另一个?
在什么情况下可以使用什么方法? (Sort
、ScrollIntoView
、MoveTo
、NodeHeight
、isVisible[]
、...)在绘画之前对操作进行分组以加速应用程序?
据我了解,它们有不同的、几乎相反的目的,对于您的用例,您需要 BeginUpdate
.
BeginUpdate
通常在您想要执行 lot 更新时调用,并且您不希望在该过程中发生重绘等。许多控件,包括 TListBox 和 TDBGrid,都有可能加快批量更新。
BeginSynch
is related to events, especially the OnChange event. The VirtualTreeView can fire the OnChange
event with some delay when you set the ChangeDelay
属性 为大于 0 的值。
这也意味着您可能会错过一些活动。如果您快速连续地进行两项更改,您可能只会获得一个事件,或者您可能会比预期晚获得该事件。
BeginSynch 将启动一个同步模式,该模式在进行更改后立即(同步)触发 OnChange 事件,覆盖 ChangeDelay 属性。启动此同步模式比保存 ChangeDelay 属性 的值并在之后恢复它更容易。
所以在某种程度上,您可以说 BeginUpdate 和 BeginSync 在速度方面几乎彼此相反,但实际上这只是关于您的用例。对于您的情况 ("grouping manipulations"),您肯定会使用 BeginUpdate
.
BeginSynch 的文档在这方面可能更清楚一些。它指的是 BeginUpdate,因为它是一种类似的机制(进入某种更新模式,具有相关的 EndSomething 方法),而实际上它应该指的是它在功能上相关的 ChangeDelay。同样有趣的是,文档底部的 'Send feedback' link 实际上并不是 link...