COMO MODIFICAR A MENSAGEM DE ERRO DO NUMBERSONLY de um TEDIT?

Delphi

16/01/2017

Bom dia pessoal,
Meu problema é o seguinte: Desenvolvo em Delphi uma aplicação no idioma Espanhol e estou utilizando a propriedade NumbersOnly do componente TEdit para permitir apenas digitação de números, como vocês já sabem. Mas meu problema é que a mensagem de erro, quando tentamos digitar letras, aparece em português e eu preciso que apareça em espanhol para meu cliente. A mensagem aparece no tipo baloonhint, criada pelo Delphi. Ja entrei nas Units TCustomEdit e nao consegui encontrar o local da mensagem para modifica-la para o ESPANHOL. alguem pode me ajudar?

A mensagem que presciso modificar para o espanhol é essa:
CARACTERE INACEITÁVEL - você pode digitar apenas números aqui.
Wilton Santos

Wilton Santos

Curtidas 0

Respostas

Gutierry Pereira

Gutierry Pereira

16/01/2017

Bom dia,
Verifica se as mensagens do componente não estão dentro de uma unit com resourceString.
Em geral muitos compontes fazem isso, afim de facilitar a manutenção nas strings de apresentação,
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

16/01/2017

Uma maneira!

If not( key in['0'..'9',#08] ) then
key:=#0;
Application.MessageBox('Usted puede digitar sólo números aquí.','CARACTERE INACEITÁVEL!');
end;

Ou

If not( key in['0'..'9',#08] ) then
begin
key:=#0;
Edit1.Hint:='Usted puede digitar sólo números aquí.';
Edit1.ShowHint:=true;
end;
GOSTEI 0
Wilton Santos

Wilton Santos

16/01/2017

Caro amigo, as soluções infelizmente não resolveram, porque estou usando a Property NumbersOnly do componente. Nao encontrei nenhum sinal de resource string neste codigo, pois o codigo da Vcl.StdCtrls que cria a propriedade SetNunbersOnly está assim:
procedure TCustomEdit.SetNumbersOnly(Value: Boolean);
begin
  if FNumbersOnly <> Value then
  begin
    FNumbersOnly := Value;
    if HandleAllocated then
    begin
      if FNumbersOnly then
        SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) or ES_NUMBER)
      else
        SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and not ES_NUMBER);
    end;
  end;
end;


Eu gostaria de saber quem neste codigo chama alguma função de Unit Resource String, porque me parece que está usando o próprio Windows. Na verdade eu até gostaria de fazer que minhas mensagens de erro respondessem desse modo, sem utilizar show mensage ou messagebox. Eu queria que aparecesse em um baloonHint sempre apontando para onde estiver piscando o cursor e ao clicar qualquer tecla o baloonHint desaparecesse, conforme acontece ai nesta mensagem, mas nao consigo encontrar o lugar deste código da mensagem.
GOSTEI 0
POSTAR