AGB  ·  Datenschutz  ·  Impressum  







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

Form schließt sich nicht mit Close

Ein Thema von messie · begonnen am 10. Mai 2007 · letzter Beitrag vom 11. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

Form schließt sich nicht mit Close

  Alt 10. Mai 2007, 12:21
Hallo,

ich beschreibe ein Form im OnShow. Geht dabei etwas schief, soll das Form über einen Timer geschlossen werden. Habe ich schon häufig gemacht (ist nicht besonders schön aber einfach), jetzt funktioniert das nicht.

Was wird denn alles abgearbeitet beim FormClose ausser FormCloseQuery?

Danke, Messie
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Form schließt sich nicht mit Close

  Alt 10. Mai 2007, 12:43
Hallo,

warum nimmst du einen Timer? Kannst du nicht einfach die Methode Release() anstatt Close() aufrufen?

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Form schließt sich nicht mit Close

  Alt 10. Mai 2007, 12:46
Moin

um dennoch auf deine Frage zurückzukommen:
Zitat von messie:
Was wird denn alles abgearbeitet beim FormClose ausser FormCloseQuery?
Siehe Ablauf der Events beim Erzeugen/Schliessen eines Formulares.
  Mit Zitat antworten Zitat
daddy

Registriert seit: 9. Sep 2005
Ort: Köln
126 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Form schließt sich nicht mit Close

  Alt 10. Mai 2007, 12:51
Was prüfst Du denn im "OnShow"? Lässt sich das nicht auch schon im "OnCreate" prüfen? Falls ja, könntest Du für den Fall, dass Du das Formular gar nicht anzeigen möchtest, eine Exception auslösen. Die musst Du dann nur im aufrufenden Formular abfangen. Dies führt insgesamt zu einer ruhigeren Bildschirmndarstellung, da das Formular erst gar nicht erscheint.

Gruß Daddy
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#5

Re: Form schließt sich nicht mit Close

  Alt 10. Mai 2007, 13:03
Wenn Du ein MDI-Form hast, dann geht close nicht. Dann musst Du den DialogResult setzen und die Action im OnCloseQuery auf caFree.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Form schließt sich nicht mit Close

  Alt 10. Mai 2007, 16:04
Zitat von marabu:
warum nimmst du einen Timer? Kannst du nicht einfach die Methode Release() anstatt Close() aufrufen?
Release kann ich auch nicht im OnShow aufrufen. Jedenfalls sagte mir das die Fehlermeldung, als ich es probiert habe. Danach wurde das Form gezeigt. Ausserdem hätte ich mit dem Befehl die Routinen aus OnClose nochmal ins OnShow kopieren müssen.
Zitat von daddy:
Lässt sich das nicht auch schon im "OnCreate" prüfen?
Nee, die Daten werden direkt vor dem Aufruf des Forms festgelegt
Zitat von Phoenix:
Wenn Du ein MDI-Form hast...
Habe ich nicht.

Zumal das mit dem timer schon häufig funktioniert hat, auch wenns nicht schön ist weil es doch kurz flackert. Aber ich zoome das Fenster sowieso im OnResize auf Bildschirmgröße, da flackerts gelegenlich sowieso. Vielleicht haut mir das auch dazwischen...
Eine Funktion Form.OnShowQuery wäre das richtige.

Grüße, Messie
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
177 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Form schließt sich nicht mit Close

  Alt 10. Mai 2007, 16:28
Warum schickst du dir nicht selbst im FormShow eine Message, die dann dein FormClose aufrufen kann, somit sparst du dir den Timer?

BTW: Eigentlich sollte vor dem Anzeigen der Form geprüft werden, ob alle Anforderungen erfüllt werden.
Ist dies nicht möglich, dann sollte dies wenigstens nach dem FormShow im Formular passieren und entsprechend
ein Hinweis auf mögliche Fehlerursachen angezeigt werden.
Gruss Gremlin
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Form schließt sich nicht mit Close

  Alt 10. Mai 2007, 16:38
Zitat von Gremlin:
Warum schickst du dir nicht selbst im FormShow eine Message, die dann dein FormClose aufrufen kann, somit sparst du dir den Timer?
Weil ich das noch nie gemacht habe....
  Mit Zitat antworten Zitat
daddy

Registriert seit: 9. Sep 2005
Ort: Köln
126 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Form schließt sich nicht mit Close

  Alt 10. Mai 2007, 16:41
Was meinst Du mit:

Zitat:
Nee, die Daten werden direkt vor dem Aufruf des Forms festgelegt
Falls es im "Create" noch nicht geht, könntest Du ja evtl. auch "Loaded" überschreiben und dort bei Bedarf eine Exception auslösen. Wovon ist denn die Anzeige des Formulars abhängig?

Gruß Daddy
  Mit Zitat antworten Zitat
Gremlin

Registriert seit: 18. Apr 2006
Ort: Im Süden
177 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Form schließt sich nicht mit Close

  Alt 10. Mai 2007, 16:58
Zitat von messie:
Zitat von Gremlin:
Warum schickst du dir nicht selbst im FormShow eine Message, die dann dein FormClose aufrufen kann, somit sparst du dir den Timer?
Weil ich das noch nie gemacht habe....

Delphi-Quellcode:
const
  WM_CloseMeNow = WM_USER+1;

type
  [...]
  private
    procedure FormCloseMeNow(var Msg:TMessage); message WM_CloseMeNow;
  public
  [...]

procedure TForm1.FormShow(Sender: TObject);
begin
  [...]
  PostMessage(Handle, WM_CloseMeNow, 0, 0);
end;

procedure TForm1.FormCloseMeNow(var Msg:TMessage);
begin
  Close;
end;
Gruss Gremlin
  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 05:50 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