Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zwei TForm, öffnen und schließen


dontello - Di 15.03.11 23:36
Titel: Zwei TForm, öffnen und schließen
Hallo,

ich habe zwei Formulare. Ich möchte nun das erste Formular schließen und das zweit aufrufen. Außerdem soll eine Variable übergeben werden. Wie kann ich dies realisieren?

Mit "Form1.Close;" schließe ich die erste Form. Bei "Form2.Show;" bekomme ich allerdings eine Zugriffsverletzung.

Wo liegt mein Fehler?


Marc. - Di 15.03.11 23:54

user profile icondontello hat folgendes geschrieben Zum zitierten Posting springen:
Mit "Form1.Close;" schließe ich die erste Form. Bei "Form2.Show;" bekomme ich allerdings eine Zugriffsverletzung.

Ist Form1 dein Hauptformular? Hast du die Instanz von Form2 (Form2 := TForm.Create()) erzeugt?
Wie schaut dein sonstiger Source-Code aus?


dontello - Di 15.03.11 23:59


Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TLogIn.btn_loginClick(Sender: TObject);
begin
  login.Close;
  haupt.Main.Show;
end;


login = form1
haupt = form2

unter uses habe ich die Form "haupt" mit eingefügt

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


ALF - Mi 16.03.11 00:14

Da geht aber nichts hervor das Form1 oder Form2 deine MainForm ist?
Im allgemeinen ist ja Form1 die Mainform(dein Prog). Wenn Du Close in der MainForm aufrufst und gleichzeitig ne neu Form2 zum anzeigen bringen willst wird dies nicht gehen!

Gruss Alf


Marc. - Mi 16.03.11 00:14

Kann den Fehler so nicht reproduzieren oder nachvollziehen. :nixweiss:
Hast du mal debugged? :idea:

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Da geht aber nichts hervor das Form1 oder Form2 deine MainForm ist?

Naja, er schrieb ja, dass Form2 seine "hauptform" ist.


Dude566 - Mi 16.03.11 00:28

Er hat sie "haupt" genannt, das muss aber nicht zwingend heißen das es auch die Hauptform ist.
Ich vermute, dass "login" die Hauptform bei ihm ist und es daher nicht funktioniert. ;)


jaenicke - Mi 16.03.11 05:21

user profile icondontello hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TLogIn.btn_loginClick(Sender: TObject);
begin
  login.Close;
  haupt.Main.Show;
end;
Was ist denn Main? :gruebel:

Dein Konzept ist aber auch nicht so günstig. Erzeuge das Login-Formular besser im Projektquelltext (Projekt --> Quelltext anzeigen). Dann kannst du dort auch direkt verhindern, dass das Hauptfenster überhaupt erzeugt wird, wenn der Login nicht klappt.