J'essaie d'utiliser le modèle Model-View-Controller dans une petite application. Le modèle contient des données et une sélection comme ceciComment éviter les notifications circulaires dans MVC dans Delphi?
TModelSelection = record
CurrentItem : TItem;
end;
TModel = class
public
property Items : TList <TItem>;
property Selection : TModelSelection;
property Subject : TSubject <TModel>; // Observer pattern
end;
Maintenant, j'ai une vue arborescente qui observe le modèle. Si l'utilisateur sélectionne un élément dans l'arborescence, la sélection du modèle doit changer.
Le problème est que je rencontre des problèmes avec les notifications de changement circulaire: Je change la sélection de modèle dans l'événement OnChange de l'arborescence. Cela provoque la mise à jour de la sélection de l'arborescence (puisque la sélection peut également être modifiée par d'autres parties de l'application), ce qui déclenche à nouveau l'événement OnChange et ainsi de suite.
Comment puis-je éviter ce problème?
+1 merci! Utiliser le drapeau le fait pour moi. – jpfollenius
Je suis content d'avoir pu aider. Une fois que vous avez vu ce modèle, c'est assez évident. C'est souvent utile. –
Pas mal, mais ... 'sinon FChanging alors essayez FChanging: = TRUE; ... enfin FChanging: = FALSE; fin; 'me semble mieux :-) – JensG