Autor Beitrag
Krumnix
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60

Win98,2000,XP
Delphi 7 Enterprise
BeitragVerfasst: Mo 21.10.02 20:49 
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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Krumnix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60

Win98,2000,XP
Delphi 7 Enterprise
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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:
ausblenden 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):

ausblenden 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Krumnix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60

Win98,2000,XP
Delphi 7 Enterprise
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60

Win98,2000,XP
Delphi 7 Enterprise
BeitragVerfasst: Mo 21.10.02 22:37 
Ok. Habe es selbst gefunden. Nehme wohl besser OnShow, das funktioniert es.
Danke für die Hilfe

Greetz
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: 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.