![]() |
AW: Zirkuläre Referenzen
Zitat:
|
AW: Zirkuläre Referenzen
Zitat:
Eine Frage hätte ich da aber noch. Wie würdest du vorgehen, wenn man für das Open der Form noch Parameter mitgeben möchte und auch ein Result zurück bekommen möchte? Also ich habe da was, bin mir aber nicht sicher ob das die eleganteste Lösung ist.
Delphi-Quellcode:
Aufgrund von "const M: TMessage", könnte ich Records nur als Konstante-Parameter mitgeben oder könnte man das auch irgendwie mit Records machen?
TMainFormParameter = class
ParameterIN, ParameterOUT: String; end; TMainFormMessage = class( TMessage< TMainFormParameter>); TChildFormParameter = class ParameterIN, ParameterOUT: String; end; TChildFormMessage = class( TMessage< TChildFormParameter>); ..... var lParameter := TChildFormParameter.Create; try lParameter.ParameterIN := 'Ich komme aus MainForm und gebe dies als Parameter mit'; TMessageManager.DefaultManager.SendMessage( Sender, TChildFormMessage.Create( lParameter)); finally ShowMessage( lParameter.ParameterIN + sLineBreak + lParameter.ParameterOUT); lParameter.Free; end; |
AW: Zirkuläre Referenzen
Delphi-Quellcode:
procedure TTMainForm.Button1Click(Sender: TObject);
var Msg: TOpenChildFormMessage; begin Msg := TOpenChildFormMessage.Create; Msg.ParameterIN := 'Ich komme aus MainForm und gebe dies als Parameter mit'; TMessageManager.DefaultManager.SendMessage(Self, Msg, False); // das False ist wichtig! ShowMessage(Msg.ParameterOut); Msg.Free; end;
Delphi-Quellcode:
TOpenChildFormMessage = class(TMessage) public ParameterIN, ParameterOUT: String; end;
Delphi-Quellcode:
Mit records ist auch möglich, dann musst du dir die Instanz auch merken und auf dein Record per TChildFormMessage.Value (Value ist dann der generische Typ) zugreifen.
procedure MsgOpenChildForm(const Sender: TObject; const M: TMessage);
var Msg: TOpenChildFormMessage; begin if M is TOpenChildFormMessage then begin Msg := TOpenChildFormMessage(M); ShowMessage(Msg.ParameterIN); TChildForm.OpenChildForm(Sender); Msg.ParameterOut := 'Hallo Welt!'; end; end; |
AW: Zirkuläre Referenzen
:thumb:
Vielen Dank, da hab ich bisschen zu kompliziert gedacht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz