Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MDI Spezielles Child formular ansteuern (https://www.delphipraxis.net/145358-mdi-spezielles-child-formular-ansteuern.html)

_seeker_ 30. Dez 2009 12:47


MDI Spezielles Child formular ansteuern
 
Hallo ihr.

Ich habe ein Problem mit einem MDI Anwendung.
Es geht um folgendes:
Ich habe einen Form, in diesen Fall "Form1" als MDI-Form angelegt.
Nun habe ich über Datei -> Neu -> Formular einen neuen Formular erstellt und diesen mit den Option MDI-Child gesetzt
In Form1 befindet sich einen Socket-Komponennt diese kann ich wohl über Form2 ansprechen. Jedoch möchte ich auch gerne, dass der OnRead ereignis vom Socket auf Form1 auf labels, Textfelder von Form2 zugreifen kann. damit meine ich nicht das lesen, sondern das setzen.
Gedacht hätte ich folgendes:
Delphi-Quellcode:
Form2.label2.Caption := 'Blub';
jedenfalls sowas ähnlich jedoch ist dies nicht möglich.

Gibt es eine möglichkeit einen speziellen Formular anzusprechen?? Vorraussgesetz der ist geöffnet.

Ich hoffe ich konnte die Frage einigemaßen richtig formulieren.
Falls diesen Thema bereits behandelt wurde, dann bitte ich um Entschuldigung.

s.h.a.r.k 30. Dez 2009 14:56

Re: MDI Spezielles Child formular ansteuern
 
Grüß dich,

ich habe das recht leicht geschafft. Und zwar habe ich mir gerade eine Form erzeugt mit fsMDIForm und eine weitere mit fsMDIChild. Dann habe ich folgendes bei Unit1 (MDIForm) geschrieben
Delphi-Quellcode:
implementation

uses Unit2; // <-- hier die wichtige Zeile

{$R *.dfm}
und folgendes in Unit2 (MDIChild):
Delphi-Quellcode:
implementation

uses Unit1; // <-- hier die wichtige Zeile

{$R *.dfm}
Was passiert hier nun? Und zwar ist in Unit1 ja die globale Variable Form1 definiert, auf welche ich dann in Unit2 zugreifen kann und umgekehrt. Das geht eben über das Verknüpfen der Units.

Allerdings ist diese Lösung nicht wirklich toll. Es sollte eher wie folgt sein: Deine MDI-Form sollte deine Unit2 und das MDI-Formular kennen. Das MDIChild sollte zwar beim Start erzeugt werden, aber nicht automatisch, sondern von der MDIForm (beim OnCreate z.B.). Das erzeugte Child kommt dann in eine private-(oder auch public)-Variable von der MDIForm und kann so von der MDIForm genutzt werden. Beim Erzeugen vom Child kannst du dem Child auch eine Referenz auf die MDIForm geben -- es muss also eine schreibbare Eigenschaft beim MDIChild geben. Über diese Referenz kannst du dann vom Child auf die MDIForm zugreifen. Das wäre eine (halbwegs) saubere Programmierung...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz