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 */;
Inhaltsverzeichnis
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
function | public | System.Messaging.pas System.Messaging.hpp |
System.Messaging | TMessageManager |
Beschreibung
Abonniert eine Botschaft für einen Empfänger.
Rufen Sie SubscribeToMessage auf, um Botschaftsbehandlungs-Methoden für bestimmte Typen von Botschaften in einem Botschaftsmanager zu abonnieren.
Rufen Sie Unsubscribe auf, um das Abonnement einer zuvor abonnierten Methode für einen Botschaftstyp aufzuheben.
Beispiel
Dieses Beispiel zeigt, wie eine anonyme Methode abonniert werden kann. In dem Beispiel wird die anonyme Methode für Botschaften abonniert, die einen Unicode-String enthalten. Wenn eine Botschaft dieses Typs an den Botschaftsmanager gesendet wird, zeigt die anonyme Methode ein Dialogfeld mit dem String der Botschaft an.
In Delphi:
// var SubscriptionId: Integer;
SubscriptionId := MessageManager.SubscribeToMessage(TMessage<UnicodeString>, procedure(const Sender: TObject; const M: TMessage)
begin
ShowMessage((M as TMessage<UnicodeString>).Value);
end);
In C++:
- 1. Definieren Sie in Ihrer Klasse eine Methode mit der folgenden Signatur:
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. Abonnieren Sie diese Methode wie folgt:
TMessageManager* MessageManager = TMessageManager::DefaultManager;
TMetaClass* MessageClass = __classid(TMessage__1<UnicodeString>);
TMessageListenerMethod ShowReceivedMessagePointer = &(this->ShowReceivedMessage);
int SubscriptionId = MessageManager->SubscribeToMessage(MessageClass, ShowReceivedMessagePointer);
Siehe auch
- System.Messaging (Delphi) Codebeispiel
- System.Messaging (C++) Codebeispiel