Publication par le contexte (publish/subscribe)

De Wiki1000
(Différences entre les versions)
(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... »)
 
 
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.

Version actuelle en date du 1 juillet 2014 à 10: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é


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.

Voir aussi :

Outils personnels