![]() |
Methoden des anderen Child-Forms aufrufen
Hallo
Ich habe ein Hauptform mit zwei Panels (in Wirklichkeit sind es mehr Panels). In jedes Panel wird zur Laufzeit ein unterschiedliches Form erzeugt. Es existiert maximal 1 Instanz jedes Child-Forms. Wenn ich nun per Code des einen Child-Formulars auf das andere Child-Formular zugreife (Methode oder Komponente) dann erzeugt mein Programm einen Runtime-Error. Beispiel Aufruf aus ChildForm1:
Delphi-Quellcode:
ChildForm2.Label1.Caption := 'Hallo';
Wie greife ich richtig auf das andere Formular zu? Gruss + Danke |
Re: Methoden des anderen Child-Forms aufrufen
Vielleicht hast du ChildForm2 garnicht initialisiert...
Grüße vom marabu |
Re: Methoden des anderen Child-Forms aufrufen
Liste der Anhänge anzeigen (Anzahl: 1)
@marabu
Alle drei Formulare (1*Main + 2*Child) sind sichtbar. ChildForm2 wird mit Create erzeugt und einem entsprchenden Parent zugewiesen. Zudem wird das angesprochene ChildForm2 gesucht und bei Erfolg der entsprechende Code ausgeführt. Ich denke schon, dass dann ChildForm2 initialisiert ist, oder ? Gruss |
Re: Methoden des anderen Child-Forms aufrufen
Moin moin,
habe dir auch schon per PN geschickt....
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var i:Integer; begin for i := 0 to Form1.ComponentCount-1 do // Alle Komponenten des Hauptformular durchsuchen if Form1.Components[i].ClassType = TForm3 then with TForm3(Form1.Components[i]) do // <-- Die Zeile hat dir gefehlt bzw. deine "fehlerhafte" Zeile mit // TForm3(Form1.Components[i]).Label1.Caption := 'Uhrzeit: '+ TimeToStr(now()); // ersetzen, funktioniert auch Label1.Caption := 'Uhrzeit: '+ TimeToStr(now()); // Diese Anweisung erzeugt den Fehler // Form3.Button1Click(Self); // Diese Anweisung erzeugt den Fehler end; // Hier wird das gleiche gemacht wie bei Btn1 procedure TForm2.Button2Click(Sender: TObject); begin // Prüfen, ob Klasse von TForm3, falls Form3 noch nicht erzeugt wurde // gibt der Click auf den Button keinen Fehler aus... if Form1.FindComponent('Form3') is TForm3 then // Wenn ja, dann können wir Casten TForm3(Form1.FindComponent('Form3')).Label1.Caption := 'Huhu'; end; |
Re: Methoden des anderen Child-Forms aufrufen
Hallo Peter
Läuft prima!! Danke Dir. Gruss |
Re: Methoden des anderen Child-Forms aufrufen
anstelle von
Delphi-Quellcode:
kann man auch
if Form1.Components[i].ClassType = TForm3 then
Delphi-Quellcode:
verwenden.
if Form1.Components[i] is TForm3 then
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:02 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 by Thomas Breitkreuz