« TObserverController (class) » : différence entre les versions
(Page créée avec « __NOTOC__ ==Introduction== La classe TObserverController est une classe non persistante utilisable comme classe ancêtre d'un observeur. Un observeur est un objet lié ... ») |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
__NOTOC__ | __NOTOC__ | ||
==Introduction== | ==Introduction== | ||
La classe TObserverController est une classe non persistante utilisable comme classe ancêtre d'un | La classe TObserverController est une classe non persistante utilisable comme classe ancêtre d'un observateur. | ||
Un | Un observateur est un objet lié à un objet source et notifié des changements de cet objet. | ||
{{tip|Un | {{tip|Un observateur peut être utilisé comme contrôleur de saisie dans une interface utilisateur.}} | ||
===Attributs=== | ===Attributs=== | ||
Ligne 37 : | Ligne 37 : | ||
Voir aussi : | Voir aussi : | ||
Exemple d'utilisation d'un observateur, dans cet exemple, la classe observée est WFClasseA : | |||
<source lang="delphi"> | <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> | </source> | ||
[[category:Classes frameworks]] | [[category:Classes frameworks]] | ||
[[category:Version900]] | [[category:Version900]] |
Version du 28 février 2020 à 16:42
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é par les descendants de TObserverController.
OnMainObjectChanged | Appelé lorsque l'objet observé change. |
OnMainObjectPropChanged | Appelé lorsque un attribut de l'objet observé change. |
OnMainObjectBeforeCommit | Appelé 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>