System.Messaging.TMessageManager.SubscribeToMessage
Delphi
function SubscribeToMessage(const AMessageClass: TClass; const AListener: TMessageListener): Integer; overload;
function SubscribeToMessage(const AMessageClass: TClass; const AListenerMethod: TMessageListenerMethod): Integer; overload;
C++
int __fastcall SubscribeToMessage(const System::TClass AMessageClass, const _di_TMessageListener AListener)/* overload */;
int __fastcall SubscribeToMessage(const System::TClass AMessageClass, const TMessageListenerMethod AListenerMethod)/* overload */;
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
function | public | System.Messaging.pas System.Messaging.hpp |
System.Messaging | TMessageManager |
Description
Abonne un écouteur à un message.
Appelez SubscribeToMessage pour abonner les méthodes de gestion des messages à des types spécifiques de messages dans un gestionnaire de messages.
Pour désabonner une méthode précédemment abonnée d'un type de message, appelez Unsubscribe.
Exemple
L'exemple ci-dessous indique comment désabonner une méthode anonyme. L'exemple abonne la méthode anonyme aux messages contenant une chaîne Unicode. Quand un message de ce type est envoyé au gestionnaire de messages, la méthode anonyme affiche une zone de dialogue affichant la chaîne du message.
Dans Delphi :
// var SubscriptionId: Integer;
SubscriptionId := MessageManager.SubscribeToMessage(TMessage<UnicodeString>, procedure(const Sender: TObject; const M: TMessage)
begin
ShowMessage((M as TMessage<UnicodeString>).Value);
end);
Dans C++ :
- 1. Définissez une méthode de votre classe avec la signature suivante :
void __fastcall TForm1::ShowReceivedMessage(System::TObject* const Sender, System::Messaging::TMessage* const M)
{
TMessage__1<UnicodeString>* Message = dynamic_cast<TMessage__1<UnicodeString>*>(M);
if (Message)
ShowMessage(Message->Value);
}
- 2. Puis abonnez cette méthode comme suit :
TMessageManager* MessageManager = TMessageManager::DefaultManager;
TMetaClass* MessageClass = __classid(TMessage__1<UnicodeString>);
TMessageListenerMethod ShowReceivedMessagePointer = &(this->ShowReceivedMessage);
int SubscriptionId = MessageManager->SubscribeToMessage(MessageClass, ShowReceivedMessagePointer);
Voir aussi
- Exemple de code System.Messaging (Delphi)
- Exemple de code System.Messaging (C++)