Warum wird Close() nicht ausgeführt
-
Joe_M. schrieb:
Weil Du Dich im Konstruktor befindest...
Versuch's mal mit Application->Terminate(). Wenn das im Konstruktor nicht geht, verwende OnCreate(). Da funktioniert's auf jeden Fall. Aber nicht Konstruktor und OnCreate() gleichzeitig verwenden!!!!
Application->Terminate() funktioniert, warum funktioniert die
Methode der Klasse TCustomForm Close() im Konstruktor der Klasse nicht, aber die Methode einer anderen Klasse Application->Terminate?Johann
-
Weil Du ein Objekt (TForm) nicht löschen kannst, während der Konstruktor noch ausgeführt wird. Statt dessen eben der Umweg über die übergeordnete Instanz (TApplication).
-
Die große Frage, die sich mir stellt ist:
Was willst Du eigentlich damit bezwecken? Warum willst Du im Konstruktor eines Objekts das Objekt selbst gleich
wieder löschen? Ich kann darin keinen Sinn sehen. Vielleicht ist meine Vorstellungskraft auch einfach nicht ausreichend.
Und wofür ist die for-Schleife gut?Gruß,
Alexander
-
Ich mach das auch so, wenn z.B. die Anmeldung an die DB fehlschlägt. Spart man sich die Warterei auf das Erzeugen der restlichen Forms (und das sind in einigen Projekten ein Menge und dabei werden die seltener gebrauchten schon dynamisch zur Laufzeit erzeugt
)Aber die Schleife macht wirklich keinen Sinn...
-
Joe_M. schrieb:
Ich mach das auch so, wenn z.B. die Anmeldung an die DB fehlschlägt.
Aber doch wohl erst nach der Abfrage einer Bedingung? Sowas kann ich aber hier nicht erkennen. Ohne wenn und aber
wird einfach versucht, beim Erstellen des Objekts dieses gleich wieder abzuschießen.Gruß,
Alexander
-
Ich kommuniziere via RS232 mit einem Controllerboard, im Konstruktor initialisiere ich zunächst die RS232 Schnittstelle und frage dann ab
ob sich die externe Hardware am Port befindet, ist sie nicht da gebe
ich eine Meldung aus und nach betätigen des OK Buttons soll das Programm
beendet werden.
Das mit der for - Schleife war nur ein Test.
Ist es eventuell nicht richtig soetwas im Konstruktor zu tun?Gruß
Johann
-
In einem Konstruktor solltest du das nicht machen. Ein Konstruktor dient dazu zB deine Member-Variablen zu initialisieren und Speicher zu reservieren. Verschieb das ganze lieber ins OnCreate-Ereignis, da fährst du sicherer als im Konstruktor.
-
PuppetMaster2k schrieb:
In einem Konstruktor solltest du das nicht machen. Ein Konstruktor dient dazu zB deine Member-Variablen zu initialisieren und Speicher zu reservieren. Verschieb das ganze lieber ins OnCreate-Ereignis, da fährst du sicherer als im Konstruktor.
Vielen Dank für den Hinweis.
Gruß
Johann
-
PuppetMaster2k schrieb:
Verschieb das ganze lieber ins OnCreate-Ereignis, da fährst du sicherer als im Konstruktor.
Keineswegs, von der Vewendung von OnCreate ist generell abzuraten.
-
Ahso, verstehe! Danke für die Info
