작은 응용 프로그램에서 Model-View-Controller 패턴을 사용하려고합니다. 모델에 다음과 같은 데이터가 포함되어 있습니다.Delphi에서 MVC의 순환 알림을 피하는 방법은 무엇입니까?
TModelSelection = record
CurrentItem : TItem;
end;
TModel = class
public
property Items : TList <TItem>;
property Selection : TModelSelection;
property Subject : TSubject <TModel>; // Observer pattern
end;
이제 모델을 관찰하는 트리 뷰가 있습니다. 사용자가 트리 뷰에서 항목을 선택하면 모델 선택이 변경됩니다.
문제는 원형 변경 알림에 문제가 있다는 것입니다. 트리보기의 OnChange 이벤트에서 모델 선택을 변경합니다. 이로 인해 트리 뷰는 선택 사항을 업데이트합니다 (선택 사항은 응용 프로그램의 다른 부분에서도 변경 될 수 있기 때문에). 그러면 OnChange 이벤트가 다시 트리거됩니다.
이 문제를 어떻게 피할 수 있습니까?
+1 감사합니다. 플래그를 사용하면 나를 위해 그것을 않습니다. – jpfollenius
내가 도울 수있어서 기쁩니다. 이 패턴을 본 후에는 매우 분명합니다. 그것은 종종 도움이됩니다. –
나쁘지는 않지만 ... 그렇지 않다면 FChanging 다음 FChanging 시도 : = TRUE; ... 마침내 FChanging : = FALSE; 끝 : "나에게 더 나은 것 :-) – JensG