![]() |
Form schließt sich nicht mit Close
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 |
Re: Form schließt sich nicht mit Close
Hallo,
warum nimmst du einen Timer? Kannst du nicht einfach die Methode Release() anstatt Close() aufrufen? Grüße vom marabu |
Re: Form schließt sich nicht mit Close
Moin
um dennoch auf deine Frage zurückzukommen: Zitat:
![]() |
Re: Form schließt sich nicht mit Close
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 |
Re: Form schließt sich nicht mit Close
Wenn Du ein MDI-Form hast, dann geht close nicht. Dann musst Du den DialogResult setzen und die Action im OnCloseQuery auf caFree.
|
Re: Form schließt sich nicht mit Close
Zitat:
Zitat:
Zitat:
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 |
Re: Form schließt sich nicht mit Close
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. |
Re: Form schließt sich nicht mit Close
Zitat:
|
Re: Form schließt sich nicht mit Close
Was meinst Du mit:
Zitat:
Gruß Daddy |
Re: Form schließt sich nicht mit Close
Zitat:
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; |
Re: Form schließt sich nicht mit Close
Ich habe jetzt mal die Message ausprobiert. Flackert ähnlich wie beim Timer in einem Testprojekt.
Mein Fenster schließt sich aber immer noch nicht. Ich habe herausgefunden, daß es am Form.Resize liegt. Dort wird ein TFormResizer zum Zoomen der Komponenten von kalmi01 ![]() verwendet. Wenn ich das deaktiviere, schließt auch mein Fenster. Kann ich dieselbe Message dort auch verwenden um die Ausführung des FormResizers zu unterdrücken? Denn der scheint ja die vorhandenen Messages abzuschießen. Grüße, Messie OT: upps, warum sieht denn der Link so aus? [edit=Luckie]Link repariert. Mfg, Luckie[/edit] |
Re: Form schließt sich nicht mit Close
Zitat:
|
Re: Form schließt sich nicht mit Close
Zitat:
Es bleibt aber weiter für mich interessant, wie und wo die Message zum Schließen des Fensters eingefangen wird. Grüße, Messie |
Re: Form schließt sich nicht mit Close
Ich hab jetzt mal die Resize-Componente installiert, verstehe aber
nicht wie man diese anwendet oder was diese bewirken soll. Das Form schliesst sich trotzdem, wird aber kurz angezeigt (Flacker-Effekt), was aber normal ist. Wie übergibst du die Werte an das Formular? Beispiel:
Delphi-Quellcode:
Die Methode BedingungenZurAnzeigeDerFormOK prüft vor der Anzeige der Formwith TEditForm.Create(self) do begin try <Properties aus Form> := <Deine Werte>; if BedingungenZurAnzeigeDerFormOK then begin if (ShowModal=mrOK) then... end; finally Free; end; end; ob es überhaupt Sinn macht, diese mit den übergebenen Werten anzuzeigen. Vielleicht könntest du deine Form als Anhang zur Ansicht hochladen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 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-2025 by Thomas Breitkreuz