Fórum Botões no MessageDLG #166038

24/06/2003

0

Olá amigos!

Alguém sabe como faço para traduzir o caption dos botões de uma MessageDLG?
Ex.: Deseja realmente excluir o registro atual? SIM NÃO (no lugar do Yes No)

Obrigado por qualquer ajuda.

tomew


Tomew

Tomew

Responder

Posts

24/06/2003

Fernando

existe um programa que faz todo o tipo de mensagem e o
GExperts, se vc não conhece vale a pena conhecer que e muito bom
se vc quizer me mande um e-mail que te mando o programa


fr.rodrigo@bol.com.br


Responder

Gostei + 0

24/06/2003

Fernando

existe um programa que faz todo o tipo de mensagem e o
GExperts, se vc não conhece vale a pena conhecer que e muito bom
se vc quizer me mande um e-mail que te mando o programa


fr.rodrigo@bol.com.br


Responder

Gostei + 0

24/06/2003

Fred

use o application.messagebox ao inves do messagedlg

ex:
if application.messagebox(´Deseja Realmente excluir´,´Atenção´,mbyesno+mb_iconwarning) = idyes then
comandos para excluir; 8)


Responder

Gostei + 0

19/09/2005

Marcosrocha

Olá amigos, 8)
Em minhas aplicações estou usando o MessageDlg, e pretendo traduzir os botões porque tenho ouvido boatos de que o MessageBox dá muito pau e há casos em que ele aparece em português e casos em que aparece em Inglês. :shock:
Enfim ainda existe alguma maneira de traduzir esses botões no MessageDlg :wink: ?


Responder

Gostei + 0

19/09/2005

Marcosrocha

Olá amigos, 8) Em minhas aplicações estou usando o MessageDlg, e pretendo traduzir os botões porque tenho ouvido boatos de que o MessageBox dá muito pau e há casos em que ele aparece em português e casos em que aparece em Inglês. :shock: Enfim ainda existe alguma maneira de traduzir esses botões no MessageDlg :wink: ?

Ainda em tempo eu preciso disso pq estou usando CLX pra usar no Linux!!


Responder

Gostei + 0

19/09/2005

Dopi

Basta fazer o seguinte:

- Copie o arquivo o arquivo [b:84f734c542]Consts.pas[/b:84f734c542] (VCL) ou [b:84f734c542]QConsts.pas[/b:84f734c542] (CLX) para o diretório do seu projeto, ou para algum diretório do seu [b:84f734c542]LibPath[/b:84f734c542]
- Traduza as msgs e botos que vc precisar...
- Recompile o seu programa

SOKButton = ´OK´; SCancelButton = ´Cancelar´; SYesButton = ´&Sim´; SNoButton = ´&Não´; SHelpButton = ´&Ajuda´; SCloseButton = ´&Fechar´; SIgnoreButton = ´&Ignorar´; SRetryButton = ´&ReTentar´; SAbortButton = ´Abortar´; SAllButton = ´To&dos´;



Responder

Gostei + 0

19/09/2005

Marcosrocha

Já tentei fazer isso mas ainda sim aparece em inglês!!!


Responder

Gostei + 0

19/09/2005

Kenio_c

Amigo eu utilizo o Application.MessageBox, ja vem tudo traduzido


Responder

Gostei + 0

20/09/2005

Dopi

Já tentei fazer isso mas ainda sim aparece em inglês!!!


Deve funcionar... (pelo menos comigo está ok)

- Verifique se o compilador Delphi processou a QConsts.pas que está no se diretório, (gerando a QConsts.dcu)
- Experimente clicar em Project, Build ... para forçar o compilador a processar todos os fontes.


Responder

Gostei + 0

20/09/2005

Adriano Santos

Se quiser ir mais a fundo, crie seu proprio MessageDlg, eu fiz isso:

function Dc_MessageDlg(Msg: string; AType: TMsgDlgType; AButtons:
  TMsgDlgButtons; IndiceHelp: LongInt; DefButton: TMOdalResult = mrNone;
  Portugues: Boolean = True): Word;



function Dc_MessageDlg(Msg: string; AType: TMsgDlgType; AButtons:
  TMsgDlgButtons; IndiceHelp: LongInt; DefButton: TMOdalResult = mrNone;
  Portugues: Boolean = True): Word;
var
  I: Integer;
  Mensagem: TForm;
begin
  Mensagem := CreateMessageDialog(Msg, AType, Abuttons);
  Mensagem.HelpContext := IndiceHelp;
  with Mensagem do
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if (Components[i] is TButton) then
      begin
        if (TButton(Components[i]).ModalResult = DefButton) then
        begin
          ActiveControl := TWincontrol(Components[i]);
        end;
      end;
    end;
    if Portugues then
    begin
      if Atype = mtConfirmation then
        Caption := ´Confirmação´
      else if AType = mtWarning then
        Caption := ´Aviso´
      else if AType = mtError then
        Caption := ´Erro´
      else if AType = mtInformation then
        Caption := ´Informação´;
    end;
  end;
  if Portugues then
  begin
    TButton(Mensagem.FindComponent(´YES´)).Caption := ´&Sim´;
    TButton(Mensagem.FindComponent(´NO´)).Caption := ´&Não´;
    TButton(Mensagem.FindComponent(´CANCEL´)).Caption := ´&Cancelar´;
    TButton(Mensagem.FindComponent(´ABORT´)).Caption := ´&Abortar´;
    TButton(Mensagem.FindComponent(´RETRY´)).Caption := ´&Repetir´;
    TButton(Mensagem.FindComponent(´IGNORE´)).Caption := ´&Ignorar´;
    TButton(Mensagem.FindComponent(´ALL´)).Caption := ´&Todos´;
    TButton(Mensagem.FindComponent(´HELP´)).Caption := ´A&juda´;
  end;
  Result := Mensagem.ShowModal;
  Mensagem.Free;
end;



Responder

Gostei + 0

20/09/2005

Martins

[quote:96ec8e77ff=´Adriano Santos´]Se quiser ir mais a fundo, crie seu proprio MessageDlg, eu fiz isso:

function Dc_MessageDlg(Msg: string; AType: TMsgDlgType; AButtons:
  TMsgDlgButtons; IndiceHelp: LongInt; DefButton: TMOdalResult = mrNone;
  Portugues: Boolean = True): Word;



function Dc_MessageDlg(Msg: string; AType: TMsgDlgType; AButtons:
  TMsgDlgButtons; IndiceHelp: LongInt; DefButton: TMOdalResult = mrNone;
  Portugues: Boolean = True): Word;
var
  I: Integer;
  Mensagem: TForm;
begin
  Mensagem := CreateMessageDialog(Msg, AType, Abuttons);
  Mensagem.HelpContext := IndiceHelp;
  with Mensagem do
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if (Components[i] is TButton) then
      begin
        if (TButton(Components[i]).ModalResult = DefButton) then
        begin
          ActiveControl := TWincontrol(Components[i]);
        end;
      end;
    end;
    if Portugues then
    begin
      if Atype = mtConfirmation then
        Caption := ´Confirmação´
      else if AType = mtWarning then
        Caption := ´Aviso´
      else if AType = mtError then
        Caption := ´Erro´
      else if AType = mtInformation then
        Caption := ´Informação´;
    end;
  end;
  if Portugues then
  begin
    TButton(Mensagem.FindComponent(´YES´)).Caption := ´&Sim´;
    TButton(Mensagem.FindComponent(´NO´)).Caption := ´&Não´;
    TButton(Mensagem.FindComponent(´CANCEL´)).Caption := ´&Cancelar´;
    TButton(Mensagem.FindComponent(´ABORT´)).Caption := ´&Abortar´;
    TButton(Mensagem.FindComponent(´RETRY´)).Caption := ´&Repetir´;
    TButton(Mensagem.FindComponent(´IGNORE´)).Caption := ´&Ignorar´;
    TButton(Mensagem.FindComponent(´ALL´)).Caption := ´&Todos´;
    TButton(Mensagem.FindComponent(´HELP´)).Caption := ´A&juda´;
  end;
  Result := Mensagem.ShowModal;
  Mensagem.Free;
end;
[/quote:96ec8e77ff]

Muito interessante [b:96ec8e77ff]Adriano[/b:96ec8e77ff], mas não sei se ele vai querer só o MessageDlg, sabe como é, sempre vem mais depois, aí o cara quer aquela mensagem de erro em pt, pq não dá pra ler em inglês. Mas seu código tá Blz!!!!

Pq ele não usa o google para achar as mensagens traduzidas do Delphi? Seria bem melhor. Lembrando q ele deveria fazer backup antes, Ok!


Responder

Gostei + 0

20/09/2005

Adriano Santos

Muito interessante Adriano, mas não sei se ele vai querer só o MessageDlg, sabe como é, sempre vem mais depois, aí o cara quer aquela mensagem de erro em pt, pq não dá pra ler em inglês. Mas seu código tá Blz!!!! Pq ele não usa o google para achar as mensagens traduzidas do Delphi? Seria bem melhor. Lembrando q ele deveria fazer backup antes, Ok!


Então [b:2c36b4b829]Martins[/b:2c36b4b829], tem que traduzir mesmo as consts.pas e qconsts.pas, isso funciona...antigamente fazia isso.

Não sei pq não funcionou. Quando eu fazia, eu ´sobrepunha´ o próprio arquivo do Deplhi.
Na seção de downloads do DelphiBR tem:

[url=http://www.delphibr.com.br/index.php]DelphiBR - Downloads[/url]

Só sobrepor amigo e já era.


Responder

Gostei + 0

20/09/2005

Martins

[quote:bfb56a4319=´Adriano Santos´]
Muito interessante Adriano, mas não sei se ele vai querer só o MessageDlg, sabe como é, sempre vem mais depois, aí o cara quer aquela mensagem de erro em pt, pq não dá pra ler em inglês. Mas seu código tá Blz!!!! Pq ele não usa o google para achar as mensagens traduzidas do Delphi? Seria bem melhor. Lembrando q ele deveria fazer backup antes, Ok!


Então [b:bfb56a4319]Martins[/b:bfb56a4319], tem que traduzir mesmo as consts.pas e qconsts.pas, isso funciona...antigamente fazia isso.

Não sei pq não funcionou. Quando eu fazia, eu ´sobrepunha´ o próprio arquivo do Deplhi.
Na seção de downloads do DelphiBR tem:

[url=http://www.delphibr.com.br/index.php]DelphiBR - Downloads[/url]

Só sobrepor amigo e já era.[/quote:bfb56a4319]

Comigo sempre funcionou, eu sempre traduzi a [b:bfb56a4319]Consts.pas, QConsts.pas, DbConsts.pas[/b:bfb56a4319], e funfava blz!!!

Ele deve está cometendo algum erro causado por falta de atenção.

Valew [b:bfb56a4319]Adriano[/b:bfb56a4319]!!!!


Responder

Gostei + 0

26/09/2005

Mordred

Cara, tenho um projeto aqui usando CLX e meu chefe reclamou das mensagens em inglês. Copiei o QConsts.pas pra pasta do meu sistema, traduzi as mensagens e compilei. Realmente o Delphi gerou um arquivo DCU na pasta do meu sistema, mas ainda assim as mensagens dos botões aparecem em inglês.

Copiei o QConsts.pas traduzido por cima do QConsts.pas que fica na pasta Delphi\Source\CLX, apaguei as DCUs e compilei de novo. O Delphi gerou outro arquivo DCU, mas a mensagem do botão continua aparecendo em inglês.

Tentei copiar o arquivo QConsts.pas pra pasta Delphi\Lib, mas ainda assim não funcionou. Estou tão desesperado que também tentei todos os itens acima usando o arquivo Consts.pas, também sem resultados. No entanto já vi muita gente falando que traduzir estes arquivinhos funciona...

O que será que estou fazendo de errado? Estou usando Delphi 7. Será que faltou mais algum passo no processo de substituição do arquivo?


Responder

Gostei + 0

26/09/2005

Dopi

Bom, acho que para isso não virar mito é melhor mostrar algumas imagens... ;-)

[img:be882ef26e]http://www.djsystem.com.br/fotos/div/MessageDlg1.png[/img:be882ef26e] [img:be882ef26e]http://www.djsystem.com.br/fotos/div/MessageDlg2.png[/img:be882ef26e] [img:be882ef26e]http://www.djsystem.com.br/fotos/div/MessageDlg3.png[/img:be882ef26e]

Observem que traduzi os Botões e o Titulo da janela...

O código usado para gerar as telas acima foi:
procedure TForm1.Button1Click(Sender: TObject);
begin
  MessageDlg(´Teste de Botões 1´,mtInformation,[mbOk,mbCancel],0) ;
  MessageDlg(´Teste de Botões 2´,mtError,[mbYes,mbNo],0) ;
  MessageDlg(´Teste de Botões 3´,mtWarning,[mbAbort,mbRetry,mbIgnore],0) ;
end;


@Mordred

- Experimente clicar em Project, Build...
- Vc está usando MessagDlg mesmo ?
- Verifique se vc alterou as constantes corretas no QConsts.pas (veja exemplo no inicio do tópico)


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar