Ein kleines Problem ist doch aufgetreten.
Wenn der Benutzer das Fenster einfach nur wieder schließt, möchte ich festlegen, welches ModalResult zurück geliefert wird. In meinem Beispiel sollte das Cancel sein, wenn es diesen Button gibt
Mein Code sieht so aus
Delphi-Quellcode:
function MyMessageDlg(const sMsg: String; aDlgTypt: TMsgDlgType; sArrCaption: array of String;
sDlgCaption: String = ''): Integer;
// *****************************************************************************************************************************************
var
aMsgdlg: TForm;
i: Integer;
sButton: String;
TaskDialog: TTaskDialog;
begin
// create a custom task dialog
TaskDialog := TTaskDialog.Create(Application);
try
TaskDialog.Caption := sDlgCaption;
TaskDialog.Title := sMsg;
TaskDialog.CommonButtons := [];
TaskDialog.ModalResult := 0;
// add customized buttons to the task dialog
for i := low(sArrCaption) to High(sArrCaption) do
begin
with TTaskDialogButtonItem(TaskDialog.Buttons.Add) do
begin
Caption := sArrCaption[i];
ModalResult := i;
if LowerCase(Caption) = 'cancel' then
TaskDialog.ModalResult := i;
end;
end;
// display the dialog box and read the ModalResult
if TaskDialog.Execute then
Result := TaskDialog.ModalResult;
finally
TaskDialog.Free;
end;
sButton := '';
if High(sArrCaption) > 0 then
sButton := sArrCaption[Result];
end;
lDialogResult := MyMessageDlg('Test der eigenen Button.', mtConfirmation, ['ButtonYes', 'ButtonNo', 'ButtonOK', 'Cancel'], 'Dialog Test');
Klicke ich aber auf das 'Schließen Kreuz' im Header, wird immer ModalResult = 2 geliefert. Das entspricht dem standardmässigen mrCancel.
Kann ich das ändern oder wäre es besserer Stil, wenn ich meine eigenen Results mit einem Offset versehe so dass sie nicht die Standards verbiegen?