« TObserverController (class) » : différence entre les versions
Aucun résumé des modifications |
|||
| (Une version intermédiaire par le même utilisateur non affichée) | |||
| Ligne 22 : | Ligne 22 : | ||
===Méthodes d'interface=== | ===Méthodes d'interface=== | ||
Les méthodes suivantes peuvent être | Les méthodes suivantes peuvent être implémentées par les descendants de TObserverController. | ||
{|class="wikitable" | {|class="wikitable" | ||
| Ligne 103 : | Ligne 103 : | ||
[[category:Classes frameworks]] | [[category:Classes frameworks]] | ||
[[category:TObserverController]] | |||
[[category:Version900]] | [[category:Version900]] | ||
Dernière version du 28 février 2020 à 16:51
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.
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.