Olá galera, nesta Quick Tips, irei mostra como podemos remover os acentos de uma texto, seja uma string ou um simples char. Vejamos como implementar e reaproveitar este método.

 

Inicialmente vamos criar um exemplo, adicionando em nosso form, e salvando o mesmo como uFrmPrincipal.pas :

 

1 Button (BtnRemoverAcentos)

3 Edit (EdtExemplo1, EdtResultado, EdtExemplo2)

2 GroupBox (GroupBoxExemplo1, GroupBoxExemplo2)

 

Nosso exemplo completo

 

WesleyRemoverAcento01

 

Iremos agora na seção private criar uma function para remover os acentos, vejamos sua declaração:

 

private

{ Private declarations }

    function RemoverAcento(Key: Char): char;

public

{ Public }

 

 

RemoverAcento

{ Com esta função estamos verificando se a variável Key possui algum acento, usando a instrução in, por exemplo  se digitarmos 'é','è','ê', o resultado da função será “e” , e assim por diante, com esta função podemos trocar também “.” por “,” ou “,” por “.”, basta adaptar seguindo este modelo.}

 

function TFrmPrincipal.RemoverAcento(Key: Char): char;

begin

    if (key in ['é','è','ê']) then

    begin

        Result := 'e';

    end

    else

    if (key in ['É','È','Ê']) then

    begin

        Result := 'E';

    end

    else

    if (key in ['á','à','ã','â']) then

    begin

        Result := 'a';

    end

    else

    if (key in ['Á','À','Ã','Â']) then

    begin

        Result := 'A';

    end

    else

    if (key in ['í','ì','Í','Ì','î','Î']) then

    begin

        Result := 'i';

    end

    else

    if (key in ['Í','Ì','Î']) then

    begin

        Result := 'I';

    end

    else

    if (key in ['ó','ò','õ','ô']) then

    begin

        Result := 'O';

    end

    else

    if (key in ['Ó','Ò','Õ','Ô']) then

    begin

        Result := 'O';

    end

    else

    if (key in ['ú','ù']) then

    begin

        Result := 'u';

    end

    else

    if (key in ['Ú','Ù']) then

    begin

        Result := 'U';

    end

    else

    if (key in ['ç']) then

    begin

        Result := 'c';

    end

    else

    if (key in ['Ç']) then

    begin

        Result := 'C';

    end

    else

        Result := Key;

 

end;

 

{ Com este método ao clicamos no nosso BtnRemoverAcentos, todo o conteúdo de EdtExemplo1, que contiver acentos, imediatamente será substituído por caracteres sem acento }

 

BtnRemoverAcentos

procedure TFrmPrincipal.BtnRemoverAcentosClick(Sender: TObject);

Var

   S : String;

   I : Integer;

begin

   for I := 1 to Length(EdtExemplo1.Text) do

   begin

      S := S + RemoverAcento(EdtExemplo1.Text[I]);;

   end;

   EdtResultado.Text := S;

end;

 

{ Com este método ao digitarmos qualquer coisa no EdtExemplo2, que possua acento automaticamente o mesmo será substituído por um caracter sem acento }

 

EdtExemplo2Change

procedure TFrmPrincipal.EdtExemplo2KeyPress(Sender: TObject; var Key: Char);

begin

    key := RemoverAcento(Key);

end;

Fico por aqui ate à próxima Quick Tips. Baixe o exemplo completo neste post.

Um abraço

 

Wesley Y