加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Delphi的MVC中避免循环通知?

发布时间:2020-12-15 09:42:57 所属栏目:大数据 来源:网络整理
导读:我试图在一个小应用程序中使用模型 – 视图 – 控制器模式.该模型包含一些数据和这样的选择 TModelSelection = record CurrentItem : TItem;end; TModel = classpublic property Items : TList TItem; property Selection : TModelSelection; property Subje
我试图在一个小应用程序中使用模型 – 视图 – 控制器模式.该模型包含一些数据和这样的选择

TModelSelection = record
  CurrentItem : TItem;
end;  

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

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

问题是我遇到了循环更改通知的问题:我在树视图的OnChange事件中更改了模型选择.这会导致树视图更新其选择(因为选择也可以由应用程序的其他部分更改),这会再次触发OnChange事件,依此类推.

我该如何避免这个问题?

解决方法

仅通知真实的变化.

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

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

FChanging是Boolean类型的成员变量

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读