COlega Tiago

Creio que você limitar a digitação nos campos é irritante para o usuário. Não 
seria mais fácil formatar na hora de salvar as informações no banco de dados?

Veja a função abaixo:
Você vai se perguntar o porquê de certos caracteres que não existem na língua 
portuguesa, mas esta função foi feita para que tenha possobilidade de tratar 
textos multi-língues.

[codigo]

Function SemAcentos(StrEntrada, Estado: String) : String;
  var
    StrSaida: String;
    x: Integer;
begin
  for x := 1 to length(StrEntrada) do
  begin
      if (ord(StrEntrada[x]) > 31) AND (ord(StrEntrada[x]) < 126) then
         StrSaida := StrSaida+StrEntrada[x]
      else
         if StrEntrada[x] in ['Á','á','Ã','ã','À','à','Ä','ä','Â','â'] then
            StrSaida := strSaida+'a'
            else if StrEntrada[x] in ['É','é','Ê','ê','È','è','Ë','ë'] then
              StrSaida := strSaida+'e'
              else if StrEntrada[x] in ['Í','í','Ì','ì','Ï','ï','Î','î'] then
                StrSaida := strSaida+'i'
                else if StrEntrada[x] in 
['Ó','ó','Õ','õ','Ò','ò','Ö','ö','Ô','ô'] then
                  StrSaida := strSaida+'o'
                  else if StrEntrada[x] in ['Ú','ú','Ù','ù','Ü','ü','Û','û'] 
then
                    StrSaida := strSaida+'u'
                    else if StrEntrada[x] in ['Ç','ç'] then
                      StrSaida := strSaida+'c'
                      else if StrEntrada[x] in ['Ñ','ñ'] then
                        StrSaida := strSaida+'n'
                        else if StrEntrada[x] in ['Ý','ý','ÿ' ,'ÿ'] then
                          StrSaida := strSaida+'y'
                          else StrSaida := StrSaida+'';


  end;

  if Estado = 'M' then SemAcentos := uppercase(StrSaida)
     else if Estado = 'm' then SemAcentos := Lowercase(StrSaida)
        else if (Estado = 'I') or (Estado = 'i') then SemAcentos := StrSaida;

end;


[codigo]

 Emanuel Coutinho
Salvador-Ba-Brasil




________________________________
De: Tiago de Assis Pimenta <tiagopime...@ymail.com>
Para: delphi-br@yahoogrupos.com.br
Enviadas: Sexta-feira, 6 de Março de 2009 10:00:20
Assunto: [delphi-br] Problema com Função (Lógica errada ?)


Pessoal, estou com o seguinte problema aqui no meu serviço, tenho que fazer
uma função que desabilite a acentuação em todos os forms do sistema. Até ae
tudo OK, estou com a seguinte função para fazer isso.

if not (Key in ['A'..'Z', 'a'..'z', '0'..'9']) then 

key := #0;

Testei essa função direto no OnKeyPress do form e ela funcionou
perfeitamente, mas para ficar um pouco melhor, tentei colocar essa função
numa Unit aqui que tem somente Procedures e Functions. Então ela ficou assim
:

UntFuncoes

procedure Desabilita_Acentos ( Key : Char);

begin

if not (Key in ['A'..'Z', 'a'..'z', '0'..'9']) then

key := #0;

end;

UntCentro_Custo

No Evento OnKeyPress coloco assim.

procedure TfrmCentro_Custo. FormKeyPress( Sender: TObject; var Key: Char);

Begin

Desabilita_Acentos( key);

end;

Pelo que sei, era para funcionar... mas não funcionou assim, debuguei a
função e ela retonar false na verificação (Key in ['A'..'Z', 'a'..'z',
'0'..'9']) e a Key que testei foi a “é”. E mesmo dando false na verificação,
ela não le a linha Key := #0;

Alguem tem alguma explicação do porque isso ?!?!?

Como preciso passar isso logo pra frente, eu coloquei a função “if not (Key
in ['A'..'Z', 'a'..'z', '0'..'9']) then key := #0;” direto no OnKeyPress do
UntCentro_Custo para poder liberar isso hj, mas gostaria de uma explicação
para isso, pois a lógica está correta (Eu acho).

Abraços

[As partes desta mensagem que não continham texto foram removidas]


   


      Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]

Responder a