Autor Beitrag
cartridge
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 209

Win XP
D4 Prof,D6 Prof
BeitragVerfasst: Do 30.12.04 22:51 
Hallo Kollegen!

Ich habe ein Problem: Ich habe ein Tool- Window, dass ich zur Laufzeit erstellen lasse. Ich habe sowohl
ausblenden Delphi-Quelltext
1:
Application.CreateForm(TMyForm,MyForm);					

als auch
ausblenden Delphi-Quelltext
1:
MyForm:= TMyForm.Create(nil);					

ausprobiert. Wenn ich die Form schließe, bekomme ich für
ausblenden Delphi-Quelltext
1:
if (MyForm <> nil) ...					

immer false!!!

Woran kann das liegen? Bevor die Form erstellt wurde, ist sie nil. (Das funktioniert also korrekt). Danach kriege ich sie aber nie auf nil

MfG
Ingo

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.
Moderiert von user profile iconTino: Topic aus VCL (Visual Component Library) verschoben am Do 30.12.2004 um 23:51
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: Do 30.12.04 23:00 
Weil MyForm eine Variable ist, in der ein Zeiger auf das Objekt TForm zeigt. Mit Assigned und nil kannst du nicht prüfen ob das Objekt noch existiert.

_________________
Ciao, Sprint.
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Do 30.12.04 23:49 
Hallo!

cartridge hat folgendes geschrieben:
Wenn ich die Form schließe, bekomme ich für
ausblenden Delphi-Quelltext
1:
if (MyForm <> nil) ...					

immer false!!!

Was bedeutet denn für dich "schließe"?

Du musst als erstes deine Instance freigeben und anschl. auf NIL setzten. Also z. b. so:
ausblenden Delphi-Quelltext
1:
2:
MyForm.Free;    // Instance freigeben / Speichern freigeben
MyForm := nil;  // Variable auf NIL setzen.

oder einfacher:
ausblenden Delphi-Quelltext
1:
FreeAndNil (MyForm);					


Gruß
Tino
cartridge Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 209

Win XP
D4 Prof,D6 Prof
BeitragVerfasst: Fr 31.12.04 14:10 
Mit "Schließen" meine ich, dass der Anwender den Schließen- Button klickt oder im Systemmenü auf Schließen geht oder [Alt]+[F4] drückt.

Ich habe es im FormDestroy auch schon mal mit MyForm:= nil; versucht. Hat aber auch nichts gebracht.
Ich könnte es mir auch leichter machen und die Form zur Designzeit erstellen und nur verstecken. Dann könnte ich auf "MyForm.Showing" prüfen. aber das kann es ja auch nicht sein...

Wer weiß Rat?

Einen guten Rutsch ins Jahr 2005!
Ingo