TObserverController (class)

De Wiki1000

Introduction

La classe TObserverController est une classe non persistante utilisable comme classe ancêtre d'un observateur.

Un observateur est un objet lié à un objet source et notifié des changements de cet objet.

Tip : Un observateur peut être utilisé comme contrôleur de saisie dans une interface utilisateur.

Attributs

MainObject Référence sur l'objet observé.

Méthodes

SetMainObjectOID Positionne l'OID de l'objet observé

Méthodes d'interface

Les méthodes suivantes peuvent être implémentées par les descendants de TObserverController.

OnMainObjectChanged Appelée lorsque l'objet observé change.
OnMainObjectPropChanged Appelée lorsque un attribut de l'objet observé change.
OnMainObjectBeforeCommit Appelée avant le commit de l'objet observé.

Voir aussi :

Exemple d'utilisation d'un observateur, dans cet exemple, la classe observée est WFClasseA :

<source lang="delphi"> unit TestSYFREWF; interface

Type

 TWFClasseAObserver = Class(TObserverController)
 public
   Function getWFClasseA():WFClasseA;
   Procedure OnMainObjectBeforeCommit;
   Procedure OnMainObjectChanged;
   Procedure OnMainObjectPropChanged(const iPropName:string);
 end;

Implementation

{TWFClasseAObserver}

Function TWFClasseAObserver.getWFClasseA():WFClasseA; //Function getWFClasseA():WFClasseA; begin

 // get the typed actual instance  
 Result := MainObject as WFClasseA;

end;

Procedure TWFClasseAObserver.OnMainObjectBeforeCommit; //Procedure OnMainObjectBeforeCommit; var inst:WFClasseA; begin

 // do some additional checks before commit 
 inst := GetWFClasseA;
 if Assigned(inst) then
  begin 
    if inst.uneChaine= then raise ERule.Create('La chaine est obligatoire');
  end; 

end;

Procedure TWFClasseAObserver.OnMainObjectChanged; //Procedure OnMainObjectChanged; var inst:WFClasseA; begin

 // do something when main instance changed 
 inst := GetWFClasseA;
 if Assigned(inst) then
  begin
  end; 

end;

Procedure TWFClasseAObserver.OnMainObjectPropChanged(const iPropName:string); //Procedure OnMainObjectPropChanged(const iPropName:string); var inst:WFClasseA; begin

 // do something when property of main instance changed 
 if (iPropName='unCode') then 
  begin
    inst := GetWFClasseA; 
    if Assigned(inst) and (inst.uneChaine=) then inst.uneChaine := inst.unCode;
  end;  

end;

end. </source>