Diffusion d'un message à tous les contrôles d'une fiche

De RAD Studio
Aller à : navigation, rechercher

Remonter à Envoi des messages


Quand votre composant modifie les paramètres globaux qui affectent tous les contrôles d'une fiche ou d'un autre conteneur, vous pouvez envoyer un message à ces contrôles pour qu'ils puissent se mettre à jour eux-mêmes en conséquence. Les contrôles ne seront pas tous concernés par cette notification, mais grâce à la diffusion du message, vous informez tous les contrôles qui savent comment répondre tout en permettant aux autres d'ignorer le message.


Ensuite, passez l'enregistrement de ce message au parent de tous les contrôles qui doivent être notifiés. Cela peut être n'importe quel contrôle de l'application. Par exemple, ce peut être le parent d'un contrôle que vous êtes en train d'écrire :

Delphi :
 var
 Msg: TMessage;
 begin
   Msg.Msg := MY_MYCUSTOMMESSAGE;
   Msg.WParam := 0;
   Msg.LParam := Longint(Self);
   Msg.Result := 0;
C++ :
 TMessage Msg;
 Msg.Msg = MY_MYCUSTOMMESSAGE;
 Msg.WParam = 0;
 Msg.LParam = (int)(this);
 Msg.Result = 0;

Ensuite, transmettez cet enregistrement de message au parent de tous les contrôles que vous voulez notifier. Il peut s'agir de n'importe quel contrôle de l'application. Par exemple, il peut s'agir du parent du contrôle que vous êtes en train d'écrire :

Delphi :
 Parent.Broadcast(Msg);
C++ :
 Parent->Broadcast(&Msg);

Ce peut être la fiche contenant votre contrôle :

Delphi :
 GetParentForm(self).Broadcast(Msg);
C++ :
 GetParentForm(this)->Broadcast(&Msg);

Ce peut être la fiche active :

Delphi :
 Screen.ActiveForm.Broadcast(Msg);
C++ :
 Screen->ActiveForm->Broadcast(&Msg);

Ce peut même être toutes les fiches de votre application :

Delphi :
 for I:= 0 to Screen.FormCount - 1 do
   Screen.Forms[I].Broadcast(Msg);
C++ :
 for (int i = 0; i < Screen->FormCount; i++)
   Screen->Forms[i]->Broadcast(&Msg);

Voir aussi