![]() |
Event: Form über Schließen-Kreuz beenden
Guten Morgen,
Gibt es ein Event, dass nur ausgelöst wird, wenn ich das Fenster über das "Schließen-Kreuz" beenden will? Oder kann ich im OnCloseQuery abfragen, ob das Kreuz gedrückt wurde? Vielen Dank und freundliche Grüße Lorenz |
Re: Event: Form über Schließen-Kreuz beenden
Hallo,
der Source zeigt Dir wie das Drücken eines der drei Formbuttons abfangen kannst. Evt hilft Dir das weiter.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } FOldWndProc : TWndMethod; procedure MyWndProc(var Msg: TMessage); public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Close; end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=True; end; procedure TForm1.FormCreate(Sender: TObject); begin FOldWndProc := Self.WindowProc; // alte Fensterproceure merken Self.WindowProc:= MyWndProc; // Fensterproceure auf eigene Fensterprocedure umbiegen end; procedure TForm1.MyWndProc(var Msg: TMessage); begin If Msg.Msg = WM_NCLBUTTONDOWN then begin FOldWndProc(Msg); end else FOldWndProc(Msg); // alte Fensterproceure aufrufen end; end. |
Re: Event: Form über Schließen-Kreuz beenden
wm_SysCommand Message müsste das können, schau mal in der Hilfe bei der Kodierung des wParam's nach.
Gruß Hagen |
Re: Event: Form über Schließen-Kreuz beenden
Hi,
ich danke euch beiden erst mal für die Tipps. Allerdings habe ich noch weitere Fragen: @Jens Schumann: Was wird hier gemacht, im If und im Else-Fall wird doch der gleiche Code aufgerufen. Was passiert da genau? Zitat:
Zitat:
Vielen Dank und mit freundlichen Grüßen Lorenz |
Re: Event: Form über Schließen-Kreuz beenden
Warum das Umbiegen der fensterprozedur? Die Ereignisse OnClose und OnCloseQuery werden imnmer ausgelöst.
|
Re: Event: Form über Schließen-Kreuz beenden
Und für Minimieren/Maximieren gibt es die ApplicationEvents OnMinimize und OnMaximize (soviel ich weiß, kanns nur grad nicht probieren)
|
Re: Event: Form über Schließen-Kreuz beenden
Das Ereignis wird doch auch ausgelöst, wenn ich Close aufrufe oder man Alt-F4 drückt. Ich muss aber den Fall abfangen, wenn man das Form über das Kreuz schließt.
|
Re: Event: Form über Schließen-Kreuz beenden
Darf ich interessehalber fragen, warum du das Schließen per X anders behandeln musst als das Schließen per Alt-F4? In vielen Fällen liegt in so einer Situation ein Design-Fehler vor.
Edit: ![]() |
Re: Event: Form über Schließen-Kreuz beenden
Du kannst auch in der
![]() Damit hättest Du schonmal das Event, sobald sich der Mauszeiger über dem Close-Button befindet. Wenn Du dann noch den Status der linken Maustaste mit ![]() |
Re: Event: Form über Schließen-Kreuz beenden
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
Zitat:
Ich hänge mal ein Screenshot von meiner Form an, vielleicht wird es dann etwas deutlicher. Der Benutzer kann den Vorgang abbrechen, wenn er auf Abbrechen klickt oder auf das Kreuz, will ernich abbrechen, so soll die Form normal geschlossen werden, wenn eine bestimmte Prozedur bearbeitet wurde (dort rufe ich einfach nur Close auf). Beim Abbruch kommt noch eine Abfrage, ob der Benutzer wirklich abbrechen will, das heißt, wenn er Nein sagt, geht der Vorgang normal weiter. MFG Lorenz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 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