TObserverController (class)

De Wiki1000
Version du 28 février 2020 à 17:51 par Syfre (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

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-20px.png 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 :

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.




Whos here now:   Members 0   Guests 1   Bots & Crawlers 0
 
Outils personnels