如何在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类型的成员变量 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |