
Delphi@Brasil Magazine - Novembro 97
Tópico do mês : Como traduzir as caixas de diálogo do Delphi para que os botões mostrem "Sim, Não, Cancelar", e no seu caption mostre "Erro, Confirmação etc..".
- Nosso primeiro passo consiste em abrir o Delphi, clicar no menu File na opção Open, quando a caixa de diálogo abrir procurar o arquivo Dialogs.pas, que caso você não tenha alterado o path do Delphi quando da instalação deverá estar localizado no seguinte path : C:\Arquivos de Programas\Borland\Delphi 3\Source\Vcl\Dialogs.pas*.
* Notar que este arquivo fontes só esta disponível nas versões Developer ( Delphi 1 e 2) e Professional (Delphi 3), assim como em todas as versões Client-Server, não estando disponível nas versões Standard do Delphi.
- Ao abrir o arquivo localize o cursor em torno da linha 1492 como mostra a figura I ( este número de linha pode variar caso você já tenha feito alguma alteração neste fonte), e note a declaração var marcada no código.
Figura I
- Abaixo do Var vemos a declaração de um array que têm como seus elementos formadores ponteiros que apontam para os tipos de mensagem previamente definidos, estas mensagems infelizmente não estão disponíveis para nós, caso estivessem seria muito simples alterá-las. Mas como não temos esta possibilidade vamos alterar a maneira como o Delphi relaciona as mensagens e os captions dos botões. O Primeiro passo a ser dado está na linha abaixo da declaração dos Captions, ela foi incluída por mim ( por isto o nome sugestivo myCaptions), este se carateriza como um novo array com o mesmo número de elementos da matriz Captions só que é do tipo String, e logo após vemos as declarações (em Português ) dos captions relativos às caixas de diálogos.
- Continuando a estudar o fonte vemos a declaração de outra matriz chamada ButtonCaption, assim como a primeira é uma matriz que aponta para mensagens anteriormente definidas, e assim como no primeiro caso também criamos uma matriz do tipo String, onde seus elementos formadores são os captions dos botões em português.
- Até este ponto a única coisa que fizemos foi a declaração de variáveis, para nossas variáveis terem um efetivo uso vamos até a função CreateMessageDlg e achemos a parte do fonte assim como mostra a figura II.

Figura II
- Veja que substituímos a antiga declaração de carregar um recurso a partir do ponteiro da matriz Captions pela localização ordinal de nossa matriz myCaptions a partir do argumento DlgType. Simples não, pois o retorno da função LoadResString é um tipo String, assim como o retorno de nossa matriz myCaptions. Até neste ponto só temos a substituição dos captions de nossas caixas de diálogo, agora veremos a substituição dos captions dos botões.
- Ainda dentro da função CreateMessageDlg, logo abaixo de nossa alteração anteriromente efetuada loacalizamos o ponto que está sendo exibido na figura III.

Figura III
- Como vemos usamos de uma estratégia semelhante à usada anteriormente substituindo a declaração do Delphi pelo carregamento de um recurso de string pela nossa matriz myButtonCaptions, porém nos utilizando do mesmo índice B para apontarmos para o elemento certo dentro da matriz.
- Após estas alterações salve o arquivo ( notar que aconselhamos a fazer um backup do antigo arquivo sem as alterações efetuadas ) e crie um novo projeto com um botão no form e uma chamada à função MessageDlg na forma :
procedure TForm1.Button1Click(Sender: TObject);
begin
MessageDlg('Isto é um teste', mtWarning, [mbOk,mbNo],0);
end;
- Ao executarmos o nosso projeto verifica-se que o MessageDlg não foi traduzido, o que ocorreu ?
- O que acontece é que esta Unit é uma Unit padrão do Delphi, e ela já foi previamente compilada portanto para que tenhamos o efeito desejado é necessário que indiquemos ao Delphi para que ele compile também esta unit juntamente com o nosso projeto. Para isso entramos no menu Project, escolhemos a opção Options e nos é mostrada uma caixa de diálogo. Selecione a aba Directories/Conditionals e dentro da ComboBox Serch Path inclua o Path do nosso arquivo alterado anteriormente como está indicado na figura IV.

Figura IV
- Com isso estamos dizendo ao Delphi para todas as vezes que for executada uma compilação ele verificar neste caminho se a data/hora do arquivo não está defazada em relação ao nosso projeto, se sim recompile as units neste Path para reconstruir nosso executável. Após fecharmos a caixa de diálogo com o Ok e recompilarmos o nosso projeto nos é mostrada a nossa caixa de diálogo em nosso bom e velho português como visto na figura V.

Figura V
- Bom pessoal espere que esta matéria venha ser de grande utilidade para vocês, e venho reforçar que caso queiram que depuremos algum tópico ou dúvida entrem em contato conosco [email protected] que dentro do possível buscaremos esclarecer todas as dúvidas. Em abraço e até o mês que vem.
Fúlvio C. Albuquerque
Editor Responsável
