gpt4 book ai didi

delphi - Delphi中MVC中如何避免循环通知?

转载 作者:行者123 更新时间:2023-12-03 15:16:41 25 4
gpt4 key购买 nike

我正在尝试在小型应用程序中使用模型- View - Controller 模式。该模型包含一些数据和这样的选择

TModelSelection = record
CurrentItem : TItem;
end;

TModel = class
public
property Items : TList <TItem>;
property Selection : TModelSelection;
property Subject : TSubject <TModel>; // Observer pattern
end;

现在我有一个观察模型的 TreeView 。如果用户在 TreeView 中选择一个项目,则模型选择应该更改。

问题是我遇到了循环更改通知的问题:我更改了 TreeView 的 OnChange 事件中的模型选择。这会导致 TreeView 更新其选择(因为应用程序的其他部分也可以更改选择),从而再次触发 OnChange 事件等。

如何避免这个问题?

最佳答案

仅通知真正的更改。

或者使用标志在更新期间禁用更新。

procedure OnChange(...)
begin
if FChanging = false then
begin
FChanging:=true;
... do updates
FChanging:=false;
end;
end;

FChanging 是 bool 类型的成员变量

关于delphi - Delphi中MVC中如何避免循环通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1906465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com