Botões no MessageDLG
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
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
Curtidas 0
Respostas
Fernando
24/06/2003
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
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
GOSTEI 0
Fernando
24/06/2003
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
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
GOSTEI 0
Fred
24/06/2003
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)
ex:
if application.messagebox(´Deseja Realmente excluir´,´Atenção´,mbyesno+mb_iconwarning) = idyes then
comandos para excluir; 8)
GOSTEI 0
Marcosrocha
24/06/2003
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: ?
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: ?
GOSTEI 0
Marcosrocha
24/06/2003
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!!
GOSTEI 0
Dopi
24/06/2003
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
- 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´;
GOSTEI 0
Marcosrocha
24/06/2003
Já tentei fazer isso mas ainda sim aparece em inglês!!!
GOSTEI 0
Kenio_c
24/06/2003
Amigo eu utilizo o Application.MessageBox, ja vem tudo traduzido
GOSTEI 0
Dopi
24/06/2003
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.
GOSTEI 0
Adriano Santos
24/06/2003
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;
GOSTEI 0
Martins
24/06/2003
[quote:96ec8e77ff=´Adriano Santos´]Se quiser ir mais a fundo, crie seu proprio MessageDlg, eu fiz isso:
[/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!
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;
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!
GOSTEI 0
Adriano Santos
24/06/2003
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.
GOSTEI 0
Martins
24/06/2003
[quote:bfb56a4319=´Adriano Santos´]
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]!!!!
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]!!!!
GOSTEI 0
Mordred
24/06/2003
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?
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?
GOSTEI 0
Dopi
24/06/2003
Bom, acho que para isso não virar mito é melhor mostrar algumas imagens... ;-)
[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:
@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)
[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)
GOSTEI 0
Mordred
24/06/2003
O código usado para gerar as telas acima foi:
- Vc está usando MessagDlg mesmo ?
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;
Eu fiz tudo certinho sim, EXCETO que estou usando Application.Message. Tem que ser MessageDlg? Não funciona com o Application. Message? Valeu pela atenção Dopi =)
GOSTEI 0
Dopi
24/06/2003
Humm.. então acho que o seu problema está ai....
A [b:bc21b4d242]Application.MessageBox[/b:bc21b4d242] não usa a QConsts.pas pois ela informa para a função da equivalente da QT apenas o Indice do Botão (veja o código da função em QForms.pas) ... O nome dos botões deve estar ´queimado´ na [b:bc21b4d242]qtintf70.dll[/b:bc21b4d242]...
Use a [b:bc21b4d242]MessageDlg[/b:bc21b4d242] que o Qconsts.pas funciona...
PS.: Fiz um teste aqui com a Application.MessageBox e realmente os botões ficam apenas em Inglês...
A [b:bc21b4d242]Application.MessageBox[/b:bc21b4d242] não usa a QConsts.pas pois ela informa para a função da equivalente da QT apenas o Indice do Botão (veja o código da função em QForms.pas) ... O nome dos botões deve estar ´queimado´ na [b:bc21b4d242]qtintf70.dll[/b:bc21b4d242]...
Use a [b:bc21b4d242]MessageDlg[/b:bc21b4d242] que o Qconsts.pas funciona...
PS.: Fiz um teste aqui com a Application.MessageBox e realmente os botões ficam apenas em Inglês...
GOSTEI 0
Marcosrocha
24/06/2003
Bom galera eu agradeço pra caramba a ajuda... :wink:
Não sei se é pau no meu projeto mas ainda sim os botões aparecem em inglês (detalhe, pra mim fazer outro MessageDlg não vira).
Vou rodar o sistema em Windows e Linux e o CLX foi a única solução. Como vocês devem saber o Linux não trabalha com API´s então nem o Foco do botão, assim como o sublinhado quando o caption é &Sim ([u:89f31b5c60]S[/u:89f31b5c60]im) não aparece. :x
Mudar a QConsts.pas não resolveu. Será que eu devo traduzir todas as ´*Consts.pas´? :?:
Vou fazer uns testes aqui e qualquer coisa eu posto. Quanto à mensagens em inglês... já vi muitos componentes que dizer Traduzir as Mensagens de Erro do Delphi. Isso deve ser uma mão na roda quando se dá um ´Access Violation´ ou ´Is not a Valid Float Point Value´ né??
:D Mas é isso, chega de escrever um livro!! T+ Pessoal!!! 8)
Não sei se é pau no meu projeto mas ainda sim os botões aparecem em inglês (detalhe, pra mim fazer outro MessageDlg não vira).
Vou rodar o sistema em Windows e Linux e o CLX foi a única solução. Como vocês devem saber o Linux não trabalha com API´s então nem o Foco do botão, assim como o sublinhado quando o caption é &Sim ([u:89f31b5c60]S[/u:89f31b5c60]im) não aparece. :x
Mudar a QConsts.pas não resolveu. Será que eu devo traduzir todas as ´*Consts.pas´? :?:
Vou fazer uns testes aqui e qualquer coisa eu posto. Quanto à mensagens em inglês... já vi muitos componentes que dizer Traduzir as Mensagens de Erro do Delphi. Isso deve ser uma mão na roda quando se dá um ´Access Violation´ ou ´Is not a Valid Float Point Value´ né??
:D Mas é isso, chega de escrever um livro!! T+ Pessoal!!! 8)
GOSTEI 0
Mordred
24/06/2003
É a mesma coisa que está acontecendo aqui comigo. Já tentei traduzir tudo quanto é ´*consts.pas´, em tudo quanto é pasta, já tentei copiar os ´*consts.pas´, ´*consts.dcu´ pra pasta do meu projeto, já tentei apagar tudo quanto é ´*consts.dcu´, já recompilei meu projeto e ele gerou novos arquivos DCU traduzidos, mas na hora do ´vamos ver´ quando executo a aplicação, tá lá: ´Invalid input value´ ao invés de ´Valor de entrada inválido´.
Será que meu Delphi está louco? Será que preciso atualizar alguma coisa aqui? Instalar algum patch? (Uso Delphi 7.)
Será que meu Delphi está louco? Será que preciso atualizar alguma coisa aqui? Instalar algum patch? (Uso Delphi 7.)
GOSTEI 0