Array
(
)

MessageDlg

Venus
   - 28 set 2004

Galera, é o seguinte, já tentei todas as alternativas dadas aki no clube delphi para traduzir os botoes dessa pentelha da messagedlg e companhia.
Já que não estou conseguindo. eu pensei s seria possivel em no delph criar um form de mensagens e ele se ajustaria a mensagem digitada.

isso é possivel, se sim, como ?


Bruno Belchior
   - 28 set 2004

use a chamada MessageBox do objeto Application que segue as normas do windows em questão ou seja c vc estiver usando um windows em portugüês ele atende em portugüês... ex

#Código


Application.MessageBox(´Aqui vai o texto em baixo´,´Aqui vai na barra de títulos´, mb_ok+mb_iconwarning);


ai é só variar por exemplo mb_ok faz aparecer o botão ok mas vc poderia ter usado o flag mb_yesno e então apareceria os botões sim e não (em portugüês!), o ao inves de mb_iconwarning (q aparece a figura de aviso) vc poderia ter usado outro flag como mb_iconerror (q apareceria a figura de erro do windows)... consulte + no help do delphi e vc vera os flags possíves...espero ter ajudado


Venus
   - 28 set 2004

bruno, não funciona.

erro : Undeclared identifier: ´mb_ok´

a ideixei assim

Application.MessageBox(´Aqui vai o texto em baixo´,´Aqui vai na barra de títulos´, mbok);

erro : Incompatible types: ´TMessageButtons´ and ´TMsgDlgBtn´

torno a lembrar, minha aplicação é CLX

juliana


Paulo_amorim
   - 28 set 2004


Citação:
bruno, não funciona.
erro : Undeclared identifier: ´mb_ok´
a ideixei assim
Application.MessageBox(´Aqui vai o texto em baixo´,´Aqui vai na barra de títulos´, mbok);
erro : Incompatible types: ´TMessageButtons´ and ´TMsgDlgBtn´
torno a lembrar, minha aplicação é CLX
juliana


Olá

Não creio que Application.MessageBox irá funcionar em CLX, visto que ele usa API do Windows............

Até+


Bruno Belchior
   - 28 set 2004

tente o seguinte

#Código


Application.MessageBox(´adfasd´,´asdfas´,20);



Carlosfim
   - 28 set 2004

Vc deve abrir o arquivo Consts.pas e traduzir as seguintes constantes:

SMsgDlgWarning
SMsgDlgError
SMsgDlgInformation
SMsgDlgConfirm
SMsgDlgYes
SMsgDlgNo
SMsgDlgOK
SMsgDlgCancel
SMsgDlgHelp
SMsgDlgHelpNone
SMsgDlgHelpHelp
SMsgDlgAbort
SMsgDlgRetry
SMsgDlgIgnore
SMsgDlgAll
SMsgDlgNoToAll
SMsgDlgYesToAll

Não esqueça de compilar novamente a Unit e jogar o arquivo Consts.dcu para a pasta Lib do delphi.

Espero ter ajudado.


Eduprp
   - 29 set 2004

Colega

Realmente isso é um tanto complicado mesmo, eu desenvolvi dois forms e funções que podem ser utilizadas. Me escreva edumrp@ig.com.br que eu te mando os fontes.
Funciona legal e fica personalizado.

Eduardo M. Pereira


Mordred
   - 26 set 2005

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?


Dopi
   - 26 set 2005

Apenas a titulo de informação:

Application.MessageBox existe na CLX, e está declarada em QForms.pas... Acho que os parametros são os mesmos da versão VCL (mas não verifiquei)

Exemplo (usado em uma aplicação CLX)
#Código

Application.MessageBox(Erro,´DJACE - Erro´,[smbOK],smsWarning) ;



Mordred
   - 26 set 2005

Sim, sim... Application.MessageBox existe na CLX e a sintaxe é exatamente esta que o Dopi passou aqui. O problema é que a CLX não usa APIs do Windows e portanto não exibe o caption dos botões em português. Mesmo usando Application.MessageBox os botões continuam sendo Yes/No.

Já tentei de tudo quanto é jeito explicado aqui no fórum, mas não consegui traduzir estas mensagens. Alguém poderia me indicar os passos para conseguir isso um pouco mais detalhadamente?


Dopi
   - 26 set 2005

Humm.. então acho que o seu problema está ai....

A Application.MessageBox 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 qtintf70.dll...

Use a MessageDlg que o Qconsts.pas funciona...

PS.: Fiz um teste aqui com a Application.MessageBox e realmente os botões ficam apenas em Inglês...


Mordred
   - 26 set 2005

Caraca!
1 - Alterei a aplicação para utilizar MessageDlg:
#Código

MessageDlg(´Confirmar Exclusão´,´Tem certeza que deseja excluir o´+
´ funcionário ´+DM.dseFuncionarioNOME.Value+´?´,mtConfirmation,[mbYes,mbNo],
0)

2 - Revisei todas as versões do QConsts.pas que encontrei na minha máquina para verificar se alguma estava desatualizada.
3 - Acertei os valores das variáveis correspondentes aos textos da MessageDlg (SMsgDlgYes, SMsgDlgNo, SMsgDlgOK, etc...) e gravei bunitinho.
4 - Apaguei todos os QConsts.dcu que encontrei na minha máquina e recompilei o projeto. Surgiu um arquivo QConsts.dcu dentro da pasta da aplicação.
5 - Verifiquei o código interno desse arquivo DCU e as mensagens estavam traduzidas corretamente.
6 - Executei a aplicação e o caption da janela da mensagem apareceu traduzido (´Confirmação´), mas os botões ainda estavam com Yes/No. :(

Já tentei apagar os arquivos compilados e desnecessários da pasta do projeto, deixando apenas os fontes e recompilando, mas ainda assim o problema persiste. Será algum problema do SO que estou usando (Win2000)? (Não creio que seja isso) Será que cometi algum erro no procedimento de tradução?

Muito obrigado pela atenção. :)