![]() |
Form schließen in FormActivate funzt nicht
Hallo,
ich rufe ein Formular aus einer Hauptanwendung auf, welches direkt innerhalb von FormActivate mit der Ausführung verschiedener Tätigkeiten beginnt. Nach Abschluss der Tätigkeiten möchte ich das Form automatisch schließen lassen. Alle Versuche, dies nach den Tätigkeiten am Ende von FormActivate durchzuführen, schlagen fehl. Das Formular bleibt weiter stehen. Ausprobiert habe ich:
Wie kann ich das Formular automatisch schließen lassen? |
Re: Form schließen in FormActivate funzt nicht
So ist das auch nicht gedacht. OnActivate wird ausgelöst, wenn das Fenster angeklickt wird, also den Fokus bekommt (jedesmal, wenn das passiert!). Und wozu soll es da direkt geschlossen werden?
Das hört sich nach einem ziemlich ungünstigen Konzept an. Was hast du denn vor? Soll auf dem Formular ein Fortschritt angezeigt und dieses dann geschlossen werden? Dann steuere das Formular von außen, also sowohl die Anzeige als auch die Aktualisierung auf dem Formular. Oder löse die Aktionen explizit aus. Sowas in OnActivate zu schreiben ist aua... |
Re: Form schließen in FormActivate funzt nicht
|
Re: Form schließen in FormActivate funzt nicht
Diese Tätigkeiten in extra Procedure und dann
Delphi-Quellcode:
So mache ich es, wenn ich etwas von einer anderen Form ausführen lassen, dieses Formular aber nicht sehen will.
try
Form1.create; Form1.procedure; // Ausführen der Procedure finally Form1.free; Form1 := nil; end; |
Re: Form schließen in FormActivate funzt nicht
Zitat:
Delphi-Quellcode:
;-)
Form1 := TForm1.Create(Self);
try Form1.MyProcedure; // Ausführen der Procedure finally FreeAndNil(Form1); // richtig, nicht aufgepasst... end; So geht es im Grunde auch, wenn das Formular als Statusfenster dienen soll. Nur dass man dann den Status einfach an das Formular weitergibt statt dort eine Prozedur nur aufzurufen. |
Re: Form schließen in FormActivate funzt nicht
Hallo,
dazu braucht man dann aber "procedure" ein eigenes Form (ja ja, ginge auch mit mehreren Procs in einem Form). Ich hatte mir das damals so gebastelt, dass ich ein semimodales Form habe (mit Label, Progressbar usw.) und der eigentliche "Tuwas"-Code in den einzelnen Units/Forms bleibt. Heiko |
Re: Form schließen in FormActivate funzt nicht
Zitat:
Für den 1. Aufruf allerdings soll das Formular nach der Abarbeitung der Tests selbst geschlossen werden. Dazu deaktiviere ich die Schalter im unteren Formularbereich und versuche den bereits genannten Schließen-Mechanismus. Bisher ohne Erfolg. Die Verwendung der OnActivate-Eigenschaft kommt daher, weil das Formular nach der Darstellung auf dem Hauptformular verschiedene Tätigkeiten durchführt, deren Status in einer Listbox angezeigt werden. In OnCreate würde das Formular noch nicht sichtbar sein, deswegen die Verwendung von OnActivate. |
Re: Form schließen in FormActivate funzt nicht
Zitat:
|
Re: Form schließen in FormActivate funzt nicht
Ja, er hatte jetzt ein Beispiel gemacht für nicht anzeigen. Aber das geht schon auch:
Delphi-Quellcode:
So mache ich das immer. Erstens bekomme ich dann keine Probleme durch unübersichtliche Beziehungen zwischen den Formularen und Quelltext in beiden Richtungen und zweitens wird es so einfach nach der Anzeige usw. wieder geschlossen und gut ists.
Form1 := TForm1.Create(Self);
try Form1.Show; Step1; Form1.UpdateStatus(20, 'Kopiere Daten...'); Step2; Form1.UpdateStatus(40, 'Mache was anderes...'); Step3; Form1.UpdateStatus(70, 'Fast fertig.'); Step4; Form1.UpdateStatus(100, 'Fertig'); finally FreeAndNil(Form1); // richtig, nicht aufgepasst... end; |
Re: Form schließen in FormActivate funzt nicht
Zitat:
Delphi-Quellcode:
:gruebel:
FreeAndNil(Form1);
|
Re: Form schließen in FormActivate funzt nicht
Hallo,
Zitat:
Heiko |
Re: Form schließen in FormActivate funzt nicht
Zitat:
|
Re: Form schließen in FormActivate funzt nicht
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz