AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form schließen in FormActivate funzt nicht

Ein Thema von DevidEspenschied · begonnen am 11. Mai 2010 · letzter Beitrag vom 11. Mai 2010
Antwort Antwort
Seite 1 von 2  1 2      
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
441 Beiträge
 
Delphi 12 Athens
 
#1

Form schließen in FormActivate funzt nicht

  Alt 11. Mai 2010, 11:15
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:
  • Close
  • Destroy
  • Free(Self)
  • FreeAndNil(Self)

Wie kann ich das Formular automatisch schließen lassen?
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.651 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Form schließen in FormActivate funzt nicht

  Alt 11. Mai 2010, 11:28
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...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Form schließen in FormActivate funzt nicht

  Alt 11. Mai 2010, 11:58
Hallo,

PostMessage(Handle, WM_CLOSE, 0, 0);
siehe dazu auch

1

#7 meiner



Heiko
Heiko
  Mit Zitat antworten Zitat
Andreas Schilling

Registriert seit: 6. Sep 2006
106 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Form schließen in FormActivate funzt nicht

  Alt 11. Mai 2010, 12:02
Diese Tätigkeiten in extra Procedure und dann
Delphi-Quellcode:
try
  Form1.create;
  Form1.procedure; // Ausführen der Procedure
finally
  Form1.free;
  Form1 := nil;
end;
So mache ich es, wenn ich etwas von einer anderen Form ausführen lassen, dieses Formular aber nicht sehen will.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.651 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Form schließen in FormActivate funzt nicht

  Alt 11. Mai 2010, 13:57
Zitat von Andreas Schilling:
Delphi-Quellcode:
try
  Form1.create;
  Form1.procedure; // Ausführen der Procedure
finally
  Form1.free;
  Form1 := nil;
end;
Du meintest wohl:
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Form schließen in FormActivate funzt nicht

  Alt 11. Mai 2010, 14:36
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
Heiko
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
441 Beiträge
 
Delphi 12 Athens
 
#7

Re: Form schließen in FormActivate funzt nicht

  Alt 11. Mai 2010, 15:22
Zitat von jaenicke:
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...
Das besagte Formular wird an 2 Stellen benutzt, und bei der 2. Stelle wird es nicht automatisch geschlossen. Der Anwender kann hier mittels Schließen-Schalter selbst das Formular schließen. Das funktioniert auch soweit ganz gut.

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.
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
441 Beiträge
 
Delphi 12 Athens
 
#8

Re: Form schließen in FormActivate funzt nicht

  Alt 11. Mai 2010, 15:41
Zitat von jaenicke:
Du meintest wohl:
Delphi-Quellcode:
Form1 := TForm1.Create(Self);
try
  Form1.MyProcedure; // Ausführen der Procedure
finally
  Form1.FreeAndNil;
end;
Das wäre auch eine Variante, aber ich muss nach dem Form1.Create immer Form1.Show bzw. Form1.ShowModal aufrufen, sonst erscheint das Formular nicht auf dem Bildschirm. Das ist mir schon mal schleierhaft...
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.651 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Form schließen in FormActivate funzt nicht

  Alt 11. Mai 2010, 16:26
Ja, er hatte jetzt ein Beispiel gemacht für nicht anzeigen. Aber das geht schon auch:
Delphi-Quellcode:
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;
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.626 Beiträge
 
Delphi 12 Athens
 
#10

Re: Form schließen in FormActivate funzt nicht

  Alt 11. Mai 2010, 17:16
Zitat:
Form1.FreeAndNil;
Seit wann gibt es denn diese Syntax (bzw. Methode)? Ich kenne nurFreeAndNil(Form1);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz