Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Methoden des anderen Child-Forms aufrufen (https://www.delphipraxis.net/55852-methoden-des-anderen-child-forms-aufrufen.html)

aschne1 27. Okt 2005 22:18


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

marabu 28. Okt 2005 05:55

Re: Methoden des anderen Child-Forms aufrufen
 
Vielleicht hast du ChildForm2 garnicht initialisiert...

Grüße vom marabu

aschne1 28. Okt 2005 07:19

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

x000x 28. Okt 2005 18:35

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;

aschne1 28. Okt 2005 21:18

Re: Methoden des anderen Child-Forms aufrufen
 
Hallo Peter

Läuft prima!! Danke Dir.


Gruss

SirThornberry 28. Okt 2005 23:10

Re: Methoden des anderen Child-Forms aufrufen
 
anstelle von
Delphi-Quellcode:
if Form1.Components[i].ClassType = TForm3 then
kann man auch
Delphi-Quellcode:
if Form1.Components[i] is TForm3 then
verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 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