Hallo
ich habe über
Delphi-Quellcode:
function MyMessageDlg(sMsg: String; aDlgTypt: TMsgDlgType; aButtons: TMsgDlgButtons; sArrCaption: array of String; sDlgCaption: String): Integer;
// *****************************************************************************************************************************************
// Eigene MessageBox mit selbst definierbaren Buttons anzeigen
var
aMsgdlg: TForm;
i: Integer;
btButton: TButton;
iCaptionIndex: Integer;
sButton: String;
begin
aMsgdlg := CreateMessageDialog(sMsg, aDlgTypt, aButtons);
aMsgdlg.Caption := sDlgCaption;
aMsgdlg.BiDiMode := bdRightToLeft;
iCaptionIndex := 0;
for i := 0 to aMsgdlg.ComponentCount - 1 Do
begin
if (aMsgdlg.components[i] is TButton) then
begin
btButton := TButton(aMsgdlg.components[i]);
if (iCaptionIndex <= High(sArrCaption)) and (sArrCaption[iCaptionIndex] <> '') then
btButton.Caption := sArrCaption[iCaptionIndex];
inc(iCaptionIndex);
end;
end;
Result := aMsgdlg.Showmodal;
sButton := sArrCaption[Index of clickt Button]
end;
eine MessageDialog, bei dem ich die Texte der Buttons definieren kann.
Jetzt könnte ich natürlich über ein Loop ermitteln welchen Index der letztlich angeklickte Button in TMsgDlgButtons hat.
Gibt es eine einfachere Möglichkeit den Index zu bekommen?
Ziel ist es den gewählten Text des Buttons zu ermitteln.
Beispiel
lDialogResult := MyMessageDlg('Test der eigenen Button.', mtConfirmation, [mbYes, mbNo, mbOk, mbCancel], ['ButtonYes', 'ButtonNo', 'ButtonOK'], 'Dialog Test');
sButton soll beim Klick auf [ButtonYes] => Result = mrYes = 6 => sButton = 'ButtonYes' liefern
In aButtons liegen [mbYes, mbNo, mbOk, mbCancel] => richtiger Index für Klick auf [mbYes] wäre 0