System.Messaging.TMessageManager.SubscribeToMessage

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

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 */;

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