Código
"funçao que traduz o messagedlg", acabei tendo a idéia de aprimora-la e envia-la mais completa,
espero que seja de bom proveito}
//Declarar em public
function MsgDlg(Frase: String; Tipo: TMsgDlgType; Botoes: TMsgDlgButtons): Integer;
function TForm1.MsgDlg(Frase: String; Tipo: TMsgDlgType; Botoes: TMsgDlgButtons): Integer;
var
Mensagem: TForm;
I, CheckModForm, TamBtn, H_Left, Y_T_A_Left, N_T_A_Left: Integer;
//Arrays para a tradução dos botoes, o array em ingles está disposto em ordem alfabetica
const Button: array [1..11] of String = ('ABORT', 'ALL', 'CANCEL', 'HELP', 'IGNORE', 'NO',
'NOTOALL', 'OK', 'RETRY', 'YES', 'YESTOALL');
const Botao: array [1..11] of String = ('A&bortar', '&Todos', '&Cancelar', '&Ajuda',
'&Ignorar', '&Não', 'Não à To&dos', '&OK', '&Repetir', '&Sim', 'S&im à Todos');
//Arrays para a tradução dos tipos de msg, o array em ingles está disposto em ordem alfabetica
const TypeMsg: array [1..4] of String = ('Confirm', 'Error', 'Information', 'Warning');
const TipoMsg: array [1..4] of String = ('Confirma', 'Erro', 'Informação', 'Cuidado');
begin
//Criando a mensagem...
Mensagem := CreateMessageDialog('' + Frase + '', Tipo, Botoes);
//Esse For verifica e aplica a tradução do estilo da msg, de acordo com a ordem dos arrays
for I := 1 to 4 do
begin
if Mensagem.Caption = TypeMsg[I] then
Mensagem.Caption := TipoMsg[I]
end;
//Como a tradução de "Yes to all" e "No to All" não cabem direto no botao padrao, pode-se
//fazer algumas adaptações de tamanho nos botoes e no MessageDlg, onde entram as variaveis
//TamBtn que guarda a Tamanho dos botoes, Y_T_A_Left que guarda o left do botao "Yes to All",
//N_T_A_Left que guarda o left do Botao "No to All" e H_Left que guarda o left do botao "Help",
//MAS CASO ACHEM DESNECESSARIO ESSAS ADAPTAÇÕES PODEM ENXUGAR O CODIGO ABAIXO APAGANDO ELE E TODAS
//AS VARIAVEIS DO TIPO INTEIRO COM EXCEÇÃO DO "I" DOS ARRAYS ATÉ O PROXIMO "FOR" QUE ELE CONTINUARÁ
//TRADUZINDO CORRETAMENTE
CheckModForm := 0;
if (Mensagem.FindComponent('YESTOALL') as TButton).Caption = 'Yes to &All' then
begin
Mensagem.Width := Mensagem.Width + 20;
TamBtn := (Mensagem.FindComponent('YESTOALL') as TButton).Width;
Y_T_A_Left := (Mensagem.FindComponent('YESTOALL') as TButton).Left;
(Mensagem.FindComponent('YESTOALL') as TButton).Width := TamBtn + 20;
CheckModForm := CheckModForm + 1;
//Como o posicionamento do botap "Help" é sempre no fim é feito mais adaptações em relação a ele
if (Mensagem.FindComponent('HELP') as TButton).Caption = '&Help' then
begin
H_Left := (Mensagem.FindComponent('HELP') as TButton).Left;
(Mensagem.FindComponent('HELP') as TButton).Left := TamBtn + Y_T_A_Left + 25;
end;
end;
if (Mensagem.FindComponent('NOTOALL') as TButton).Caption = 'N&o to All' then
begin
Mensagem.Width := Mensagem.Width + 20;
TamBtn := (Mensagem.FindComponent('NOTOALL') as TButton).Width;
N_T_A_Left := (Mensagem.FindComponent('NOTOALL') as TButton).Left;
(Mensagem.FindComponent('NOTOALL') as TButton).Width := TamBtn + 20;
CheckModForm := CheckModForm + 1;
if (Mensagem.FindComponent('HELP') as TButton).Caption = '&Help' then
begin
H_Left := (Mensagem.FindComponent('HELP') as TButton).Left;
(Mensagem.FindComponent('HELP') as TButton).Left := TamBtn + N_T_A_Left + 25;
end;
end;
//Essa variavel verifica se os botoes "Yes to All" e "No to All" estão juntos
if CheckModForm = 2 then
begin
(Mensagem.FindComponent('NOTOALL') as TButton).Left := N_T_A_Left;
(Mensagem.FindComponent('YESTOALL') as TButton).Left := Y_T_A_Left + 20;
if (Mensagem.FindComponent('HELP') as TButton).Caption = '&Help' then
(Mensagem.FindComponent('HELP') as TButton).Left := TamBtn + Y_T_A_Left + 45;
end;
//Esse For verifica e aplica a tradução dos botoes, de acordo com os arrays //
for I := 1 to 11 do
(Mensagem.FindComponent(Button[I]) as TButton).Caption := Botao[I];
//Mostra o MessageDlg traduzido
Result := Mensagem.ShowModal;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//Chamando a função
//OBS: Para criar o MessageDlg com botoes à escolha, utilize os colchetes, caso não
//os utilize terão alguns grupos padroes de botoes da função padrao
MsgDlg('Deseja deletar esse registro ?', mtConfirmation, mbAbortRetryIgnore);
end;
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009