Rückgabewerte zwischen Aplication.MessageBox und MessageDlg unterscheiden sich!!!
Rückgabewerte Aplication.Messagebox
Konstante |
Wert |
Bedeutung |
0 |
Fehler (zu wenig Speicher) |
|
ID_OK |
1 |
OK gedrückt |
ID_CANCEL |
2 |
Abbrechen gedrückt |
ID_ABORT |
3 |
Abbrechen dedrückt |
ID_RETRY |
4 |
Wiederholen gedrückt |
ID_IGNORE |
5 |
Ignorieren gedrückt |
ID_YES |
6 |
Ja gedrückt |
ID_NO |
7 |
Nein gedrückt |
Der Unterschied zu MessageDlg ist, dass die Konstante mit MR (mrYes) beginnt.
Hier einige Beispiele von Meldungsfenstern:
procedure TForm1.Button1Click(Sender: TObject);
var Antwort: integer;
begin
Antwort:= Application.MessageBox('Eine Messagebox','Info..',
MB_YESNOCANCEL+MB_ICONERROR+MB_DEFBUTTON3);
case Antwort of
ID_YES: ShowMessage('Ja gedrückt'); //Rückgabewert
kann auch ID_Yes sein
7: ShowMessage('Nein gedrückt'); // ID_YES
==> 6, 7 ==> Nein, 2 ==> Cancel
2: if MessageDlg('Cancel gedrückt! Programm beenden??',mtInformation,[mbYes,mbNo],0)=mrYes
then close;
end;
end ;
So sieht oben angeführtes Beispiel dann aus:
Antwort:= Application.MessageBox('Eine Messagebox','Info..', MB_YESNOCANCEL+MB_ICONERROR+MB_DEFBUTTON3);
Mit MB_DEFBUTTON3 wird Abbrechen als defoult Button defeniert.
Jetzt klicken wir mal auf nein und dannach auf Abbrechen
ShowMessage('Nein gedrückt');
if MessageDlg('Cancel gedrückt! Programm beenden??',mtInformation,[mbYes,mbNo],0)=mrYes
then close;