Autor Beitrag
hibbert
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: So 16.02.03 11:53 
hai,
ich möchte gerne, wenn der user auf den 'X' button der form klickt, dass dann eine messagebox erscheint und abfragt, ob die form wirklich geschlossen werden soll. das hab ich auch schon hinbekommen.
(über OnCloseQuery) doch genau hier ist mein problem: wie geht das, dass sich die form nicht schließt, wenn man auf abbrechen klickt?

mfg hibbert

_________________
I kunnen väl svara endast ja eller nej
Om i viljen eller nej
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: So 16.02.03 12:46 
Hier mal das Beispiel aus der Delphi-Hilfe zum Thema [b]OnCloseQuery[b]:
Delphi-Hilfe hat folgendes geschrieben:
Wenn der Benutzer in diesem Beispiel versucht, das Formular zu schließen, wird ein Meldungsdialog mit einer Rückfrage angezeigt. Nach einem Klick auf OK wird das Formular geschlossen. Wenn Abbrechen gewählt wird, bleibt das Formular geöffnet.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if MessageDlg('Formular schließen?', mtConfirmation,
    [mbOk, mbCancel], 0) = mrCancel then
     CanClose := False;
end;

Ich würde aber folgendes vorziehen:
ausblenden Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := MessageDlg('Formular schließen?', mtConfirmation,
    [mbOk, mbCancel], 0) = mrOk;
end;


Gruß
TINO
hibbert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1007

WinServer2003, Win XP, Linux
D6 Pers, D05
BeitragVerfasst: So 16.02.03 20:04 
hai, danke für die antwort, ich habe mich dann schließlich dafür entschieden:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var close:integer;
begin
close:=Application.MessageBox ('Möchtest du das Programm Beenden ?','',32 + 3);
if (close=2) or (close=7) then
CanClose := False;
end;


mfg hibbert

_________________
I kunnen väl svara endast ja eller nej
Om i viljen eller nej
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 17.02.03 09:22 
Hi Hibbert,

drei Dinge möchte ich Dir sagen: Benutze immer die Konstanten im Quelltext. In ein paar Tagen weißt Du gar nicht mehr was jetzt die 32, die 3, die 2 und die 7 bedeutet. Außerdem kannst Du die Variable Close sparen. Wie das geht habe ich oben gepostet. Warum überprüfst Du ob der User Abbrechen oder Nein gewählt hat. Auf eine Frage "Möchtest Du das Programm beenden?" möchte ich eigentlich nur "Ja" oder "Nein" als Auswahl bekommen. Eventl. wäre noch "Ja" und "Abbrechen" in Ordnung aber nicht "Ja", "Nein", "Abbrechen". Welche Button jetzt in der MessageBox genau angezeigt werden kann ich aus Deinem Quellcode nicht genau entnehmen.

Gruß
TINO