Entwickler-Ecke
Sonstiges (Delphi) - Daten aus Form1 in Form2!!!
Krumnix - Mo 21.10.02 20:49
Titel: Daten aus Form1 in Form2!!!
Hallo.
Vielleicht stell ich mich ja blöd an, aber irgendwie bekomme ich keine Daten aus Form 1 in Form2 rein.
In Form1 sind die Variablen so definiert, das Form2 keine definition braucht. Nur wenn ich in Form2 die Daten aufrufen will, sind dort keine vorhanden, also leer.
Die Variablen sind als String definiert.
Wer weiß, was ich falsch mache oder wie es funktionieren könnte?
Thx
Christian S. - Mo 21.10.02 21:04
Krumnix hat folgendes geschrieben: |
Nur wenn ich in Form2 die Daten aufrufen will, sind dort keine vorhanden, also leer. |
Sind sie nicht vorhanden oder leer?
Bekommst Du irgendwelche Fehlermeldungen?
Generell kannst Du (je nach Deklaration) die Variablen aus der einen Unit problemlos in einer anderen verwenden. Du must halt nur die Unit, in der die Variablen deklariert sind, in die uses-Klausel der anderen Unit einbinden.
MfG,
Peter
Krumnix - Mo 21.10.02 21:07
Ja, dies habe ich ja auch getan, also in uses die Unit deklariert. Aber leider ist die Variable immer leer. Bekomme keine Meldung.
-> Habe ein Label mit der Variable verknüpft, um zu überprüfen, ob ein Wert ankommt. Das Label hat vor Caption Label2 und nach Datenübernahme steht dort nix mehr, obwohl ich in Form1 Daten in die Variable geschreiben habe.
Hmmmmm.......
Christian S. - Mo 21.10.02 21:59
Hmmmmmmmmm......
Okay, auch auf die Gefahr hin, dass das ganze was lang wird, hier mal ein Beispiel:
Der Code von Unit1,
nach der Typdefinition für TForm1, auf der sich ein Editfeld (Edit1) und ein Button (Button1) befindet:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var Form1: TForm1; meintext: String;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin meintext:=Edit1.text; Form2.Show; end;
end. |
Und dann das selbe für Form2, auf der sich ein Label (Label1) und ein Button (Button1 befindet):
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var Form2: TForm2;
implementation
uses unit1;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject); begin Label1.Caption:=Unit1.Meintext; end;
end. |
Und damit funktioniert es, dass habe ich getestet.
MfG,
Peter
Krumnix - Mo 21.10.02 22:32
Ja, ok. Ich habe da noch was vergessen zu erwähnen.
Und zwar wird Form2 aufgerufen und der Text sollte direkt im Label erscheinen. Das habe ich über OnCreate gemacht. Und in dieser procedure nimmt er das nicht an. Und das ist das komische daran. Aber vielleicht habe ich ja grad einen Denkfehler... Hmmmmmm....
Das andere habe ich zum testen mal gemacht und er klappte, also einen Button, der die Daten dann erst ins Label schreibt.
Vielleicht funktioniert es ja irgendwie, das die Daten direkt schon erscheinen?
Thx aber schonmal
Krumnix - Mo 21.10.02 22:37
Ok. Habe es selbst gefunden. Nehme wohl besser OnShow, das funktioniert es.
Danke für die Hilfe
Greetz
Anonymous - Mo 21.10.02 22:58
Böse Falle. Alle OnCreate aller Formulare werden, soweit sie nicht manuell im Menü Projekt > Optionen > Formulare abgewählt wurden, automatisch beim starten des Programms ausgeführt. Alle Programme werden beim Start erstellt noch bevor das MainFormular sichtbar wird. Je nachdem wie die Reihenfolge ist kann eine Zuweisung im Nervana landen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!