28/09/2004

MessageDlg

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 ?


Venus

Respostas

28/09/2004

Bruno Belchior

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

   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


Responder Citar

28/09/2004

Venus

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


Responder Citar

28/09/2004

Paulo_amorim

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é+


Responder Citar

28/09/2004

Bruno Belchior

tente o seguinte

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



Responder Citar

28/09/2004

Carlosfim

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.


Responder Citar

29/09/2004

Eduprp

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


Responder Citar

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 Citar

26/09/2005

Dopi

Apenas a titulo de informação:

[b:a49941e1fb]Application.MessageBox[/b:a49941e1fb] 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)
Application.MessageBox(Erro,´DJACE - Erro´,[smbOK&93;,smsWarning) ;



Responder Citar

26/09/2005

Mordred

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?


Responder Citar

26/09/2005

Dopi

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 [b:148f15ae36]qtintf70.dll[/b:148f15ae36]...

Use a [b:148f15ae36]MessageDlg[/b:148f15ae36] que o Qconsts.pas funciona...

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


Responder Citar

26/09/2005

Mordred

Caraca!
1 - Alterei a aplicação para utilizar MessageDlg:
MessageDlg(´Confirmar Exclusão´,´Tem certeza que deseja excluir o´+
  ´ funcionário ´+DM.dseFuncionarioNOME.Value+´?´,mtConfirmation,[mbYes,mbNo&93;,
  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. :)


Responder Citar