« Publication par le contexte (publish/subscribe) » : différence entre les versions

De Wiki1000
(Page créée avec « Le contexte utilisateur publie certains évènements. Ces messages sont publiés sous le sujet : //sys/nom_de_l_évènement {|class="wikitable" |- !Evènement !Déclen... »)
 
Aucun résumé des modifications
 
Ligne 28 : Ligne 28 :


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


Type
Type
   Handlers = Class(TitObject)
   TRegisterTestMultiSociete = Class(TitObject)
   public
   public
     Procedure HandlerDatabaseChange(const iTopic:string; const iEvent:Variant);
     Procedure HandlerDatabaseChange(const iTopic:string; const iEvent:Variant);
     Procedure HandlerSocietyChange(const iTopic:string; const iEvent:Variant);
     Procedure HandlerSocietyChange(const iTopic:string; const iEvent:Variant);
     Class Procedure RegisterHandlers;
     Class Procedure Initialize;
   end;
   end;


Implementation
Implementation


{Handlers}
{TRegisterTestMultiSociete}


Procedure Handlers.HandlerDatabaseChange(const iTopic:string; const iEvent:Variant);
Procedure TRegisterTestMultiSociete.HandlerDatabaseChange(const iTopic:string; const iEvent:Variant);
//Procedure HandlerDatabaseChange(const iTopic:string; iEvent:Variant);
//Procedure HandlerDatabaseChange(const iTopic:string; iEvent:Variant);
begin
begin
Ligne 50 : Ligne 49 :
end;
end;


Procedure Handlers.HandlerSocietyChange(const iTopic:string; const iEvent:Variant);
Procedure TRegisterTestMultiSociete.HandlerSocietyChange(const iTopic:string; const iEvent:Variant);
//Procedure HandlerSocietyChange(const iTopic:string; const iEvent:Variant);
//Procedure HandlerSocietyChange(const iTopic:string; const iEvent:Variant);
begin
begin
Ligne 56 : Ligne 55 :
end;
end;


Class Procedure Handlers.RegisterHandlers;
Class Procedure TRegisterTestMultiSociete.Initialize;
//Class Procedure RegisterHandlers;
//Class Procedure Initialize;
var inst:Handlers;
var inst:TRegisterTestMultiSociete;
begin
begin
  showMessage('Register');
   inst := UserContext.getObject('handlers');
   inst := UserContext.getObject('handlers');
   if not Assigned(inst) then
   if not Assigned(inst) then
   begin
   begin
     inst := Handlers.Create;
     inst := TRegisterTestMultiSociete.Create;
     UserContext.SetObject('handlers',inst);
     UserContext.SetObject('handlers',inst);
     inst.subscribe('//sys/AfterDatabaseChange','HandlerDatabaseChange');
     inst.subscribe('//sys/AfterDatabaseChange','HandlerDatabaseChange');
Ligne 69 : Ligne 69 :
   end;
   end;
end;
end;


end.
end.

Dernière version du 1 juillet 2014 à 09:50

Le contexte utilisateur publie certains évènements.

Ces messages sont publiés sous le sujet :

//sys/nom_de_l_évènement
Evènement Déclenchement
BeforeDisconnect
AfterConnect
BeforeDatabaseChange La base de données par défaut va changer
AfterDatabaseChange La base de données par défaut à changé
AfterShareContextChange Le contexte société à changé


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

Type

 TRegisterTestMultiSociete = Class(TitObject)
 public
   Procedure HandlerDatabaseChange(const iTopic:string; const iEvent:Variant);
   Procedure HandlerSocietyChange(const iTopic:string; const iEvent:Variant);
   Class Procedure Initialize;
 end;

Implementation

{TRegisterTestMultiSociete}

Procedure TRegisterTestMultiSociete.HandlerDatabaseChange(const iTopic:string; const iEvent:Variant); //Procedure HandlerDatabaseChange(const iTopic:string; iEvent:Variant); begin

 ShowMessage('DatabaseChange');

end;

Procedure TRegisterTestMultiSociete.HandlerSocietyChange(const iTopic:string; const iEvent:Variant); //Procedure HandlerSocietyChange(const iTopic:string; const iEvent:Variant); begin

 ShowMessage('SocietyChange');

end;

Class Procedure TRegisterTestMultiSociete.Initialize; //Class Procedure Initialize; var inst:TRegisterTestMultiSociete; begin

 showMessage('Register');
 inst := UserContext.getObject('handlers');
 if not Assigned(inst) then
  begin
    inst := TRegisterTestMultiSociete.Create;
    UserContext.SetObject('handlers',inst);
    inst.subscribe('//sys/AfterDatabaseChange','HandlerDatabaseChange');
    inst.subscribe('//sys/AfterShareContextChange','HandlerSocietyChange');
  end;

end;

end. </source>

Voir aussi :