Aquí vamos a aprender cómo podemos crear nuestro propio MessageDLG con sus botones traducidos, empecemos:
Debemos agregar en el uses las unidades System.TypInfo y System.UITypes.
Creamos una constante con los captions de los botones traducidos:
const BotonesCaption: array[TMsgDlgBtn] of String = ( 'Sí', 'No', 'OK', 'Cancelar', 'Abortar', 'Reintentar', 'Ignorar', 'Todos', 'No a Todo', 'Sí a Todo', 'Ayuda', 'Cerrar');
Declaramos las siguientes funciones:
function StrToMsgBtn(aStr:String):TMsgDlgBtn; function MensajeDLG(const Msg: string; DLGCaption: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons): Integer;
La función StrToMsgBtn de encarga de convertir un string en un valor enumerado:
function StrToMsgBtn(aStr:String):TMsgDlgBtn; begin result := TMsgDlgBtn(GetEnumValue(TypeInfo(TMsgDlgBtn),aStr)); end;
Y la función MensajeDLG es donde hacemos la magia, mostrar la ventana modal con su mensaje:
function MensajeDLG(const Msg: string; DLGCaption: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons): Integer; var i: Integer; dlgButton: TButton; CaptionIndex: TMsgDlgBtn; begin with CreateMessageDialog(Msg, DlgType, Buttons) do begin Caption := DLGCaption; for i := 0 to ControlCount - 1 do begin if (Components[i] is TButton) then begin dlgButton := TButton(Components[i]); CaptionIndex := StrToMsgBtn('mb'+dlgButton.Name); dlgButton.Caption := BotonesCaption[CaptionIndex]; end; end; Result := ShowModal; end; end;
Su modo de uso sería:
if MensajeDLG('¿Seguro deseas cerrar esta aplicación?','Aviso',[mbYes,mbNo]) = 6 then Close;
Espero lo disfruten.
Saludos.