nao usar acentos no edit

Delphi

01/09/2005

ola amigos, qual eh a funçao q bloqueia acentos, Ç, tremas etc.. nas letras? obrigado o usuario a digitar somente as palavras sem acentos, Ç etc..

um abraço

postem o codigo po favor!


Njuniorba

Njuniorba

Curtidas 0

Respostas

Adriano Santos

Adriano Santos

01/09/2005

  function AnsiToAscii(str: char): string;
  var
    i: Integer;
  begin
    case str of
      ´á´: str := ´a´;
      ´é´: str := ´e´;
      ´í´: str := ´i´;
      ´ó´: str := ´o´;
      ´ú´: str := ´u´;
      ´à´: str := ´a´;
      ´è´: str := ´e´;
      ´ì´: str := ´i´;
      ´ò´: str := ´o´;
      ´ù´: str := ´u´;
      ´â´: str := ´a´;
      ´ê´: str := ´e´;
      ´î´: str := ´i´;
      ´ô´: str := ´o´;
      ´û´: str := ´u´;
      ´ä´: str := ´a´;
      ´ë´: str := ´e´;
      ´ï´: str := ´i´;
      ´ö´: str := ´o´;
      ´ü´: str := ´u´;
      ´ã´: str := ´a´;
      ´õ´: str := ´o´;
      ´ñ´: str := ´n´;
      ´ç´: str := ´c´;
      ´Á´: str := ´A´;
      ´É´: str := ´E´;
      ´Í´: str := ´I´;
      ´Ó´: str := ´O´;
      ´Ú´: str := ´U´;
      ´À´: str := ´A´;
      ´È´: str := ´E´;
      ´Ì´: str := ´I´;
      ´Ò´: str := ´O´;
      ´Ù´: str := ´U´;
      ´Â´: str := ´A´;
      ´Ê´: str := ´E´;
      ´Î´: str := ´I´;
      ´Ô´: str := ´O´;
      ´Û´: str := ´U´;
      ´Ä´: str := ´A´;
      ´Ë´: str := ´E´;
      ´Ï´: str := ´I´;
      ´Ö´: str := ´O´;
      ´Ü´: str := ´U´;
      ´Ã´: str := ´A´;
      ´Õ´: str := ´O´;
      ´Ñ´: str := ´N´;
      ´Ç´: str := ´C´;
    end;
    Result := str;
  end;



Essa função troca o acento por sem acento.
Acho que dá pra ser mais curta, mas foi a única que achei aqui nos meus arquivos.


GOSTEI 0
Martins

Martins

01/09/2005

[quote:76467eacdc=´Adriano Santos´]
  function AnsiToAscii(str: char): string;
  var
    i: Integer;
  begin
    case str of
      ´á´: str := ´a´;
      ´é´: str := ´e´;
      ´í´: str := ´i´;
      ´ó´: str := ´o´;
      ´ú´: str := ´u´;
      ´à´: str := ´a´;
      ´è´: str := ´e´;
      ´ì´: str := ´i´;
      ´ò´: str := ´o´;
      ´ù´: str := ´u´;
      ´â´: str := ´a´;
      ´ê´: str := ´e´;
      ´î´: str := ´i´;
      ´ô´: str := ´o´;
      ´û´: str := ´u´;
      ´ä´: str := ´a´;
      ´ë´: str := ´e´;
      ´ï´: str := ´i´;
      ´ö´: str := ´o´;
      ´ü´: str := ´u´;
      ´ã´: str := ´a´;
      ´õ´: str := ´o´;
      ´ñ´: str := ´n´;
      ´ç´: str := ´c´;
      ´Á´: str := ´A´;
      ´É´: str := ´E´;
      ´Í´: str := ´I´;
      ´Ó´: str := ´O´;
      ´Ú´: str := ´U´;
      ´À´: str := ´A´;
      ´È´: str := ´E´;
      ´Ì´: str := ´I´;
      ´Ò´: str := ´O´;
      ´Ù´: str := ´U´;
      ´Â´: str := ´A´;
      ´Ê´: str := ´E´;
      ´Î´: str := ´I´;
      ´Ô´: str := ´O´;
      ´Û´: str := ´U´;
      ´Ä´: str := ´A´;
      ´Ë´: str := ´E´;
      ´Ï´: str := ´I´;
      ´Ö´: str := ´O´;
      ´Ü´: str := ´U´;
      ´Ã´: str := ´A´;
      ´Õ´: str := ´O´;
      ´Ñ´: str := ´N´;
      ´Ç´: str := ´C´;
    end;
    Result := str;
  end;



Essa função troca o acento por sem acento.
Acho que dá pra ser mais curta, mas foi a única que achei aqui nos meus arquivos.[/quote:76467eacdc]

Tem sim [b:76467eacdc]Adriano[/b:76467eacdc]

Fica mais ou menos assim:

Function SemAcentos ( Texto: string ): string;
var Contar, Posicao: integer;
    Acentos, TiraAcentos: string;
begin
     Acentos:=´áäàãâÁÄÀÃÂéëèêÉËÈÊíïìîÍÏÌÎóöòõôÓÖÒÕÔúüùûÚÜÙÛçÇ´;
     TiraAcentos:=´aaaaaAAAAAeeeeEEEEiiiiIIIIoooooOOOOOuuuuUUUUcC´;
     Result:=´´;
     For Contar:=1 to Length(Texto) do
      begin
         Posicao:=Pos(Copy(Texto,Contar,1),Acentos);
         If Posicao=0 then
            Result:=Result+Copy(Texto,Contar,1)
         else
            Result:=Result+Copy(TiraAcentos,Posicao,1);
      end;
end;


Boa sorte!!!


GOSTEI 0
Imoreira

Imoreira

01/09/2005

procedure TForm1.editKeyPress(Sender: TObject; var Key: Char);
begin
if (pos(key,´abcdefghijklmnopqrstuvxwyzABCDEFGHIJKLMNOPQRSTUVXWYZ1234567890´+#8)=0) THEN BEGIN
key:=0;
end;
end;


GOSTEI 0
Adriano Santos

Adriano Santos

01/09/2005

Tem sim [b:89803f8899]Adriano[/b:89803f8899] Fica mais ou menos assim:
Function SemAcentos ( Texto: string ): string;
var Contar, Posicao: integer;
    Acentos, TiraAcentos: string;
begin
     Acentos:=´áäàãâÁÄÀÃÂéëèêÉËÈÊíïìîÍÏÌÎóöòõôÓÖÒÕÔúüùûÚÜÙÛçÇ´;
     TiraAcentos:=´aaaaaAAAAAeeeeEEEEiiiiIIIIoooooOOOOOuuuuUUUUcC´;
     Result:=´´;
     For Contar:=1 to Length(Texto) do
      begin
         Posicao:=Pos(Copy(Texto,Contar,1),Acentos);
         If Posicao=0 then
            Result:=Result+Copy(Texto,Contar,1)
         else
            Result:=Result+Copy(TiraAcentos,Posicao,1);
      end;
end;


procedure TForm1.editKeyPress(Sender: TObject; var Key: Char); begin if (pos(key,´abcdefghijklmnopqrstuvxwyzABCDEFGHIJKLMNOPQRSTUVXWYZ1234567890´+#8)=0) THEN BEGIN key:=#0; end; end;



[b:89803f8899]Martins[/b:89803f8899] e [b:89803f8899]iMoreira[/b:89803f8899], já estou atualizando meus arquivos de dicas :D....
Quem sabe, sabe não é msm?


GOSTEI 0
Martins

Martins

01/09/2005

procedure TForm1.editKeyPress(Sender: TObject; var Key: Char); begin if (pos(key,´abcdefghijklmnopqrstuvxwyzABCDEFGHIJKLMNOPQRSTUVXWYZ1234567890´+#8)=0) THEN BEGIN key:=0; end; end;

Interessante esse seu código, mas não sei se vc percebeu q ele somente impede q os caracteres acentuados sejam digitados ex: JOÃO, o seu código do jeito q vc postou ficaria JOO, pq ele impede a digitação do Ã, então o usuário teria q colocar o A sem o acento, e tem mais, ele impede a utilização da barra de espaço, podem testar, se vcs conseguirem algo diferente, tentarei novamente, pois então devo ter feito algo errado.

Um abraço !!!!

:wink:


GOSTEI 0
Adriano Santos

Adriano Santos

01/09/2005

Interessante esse seu código, mas não sei se vc percebeu q ele somente impede q os caracteres acentuados sejam digitados ex: JOÃO, o seu código do jeito q vc postou ficaria JOO, pq ele impede a digitação do Ã, então o usuário teria q colocar o A sem o acento, e tem mais, ele impede a utilização da barra de espaço, podem testar, se vcs conseguirem algo diferente, tentarei novamente, pois então devo ter feito algo errado. :wink:


Verdade [b:dda3aa6d7f]Martins[/b:dda3aa6d7f] também testei aqui, mas é porque ele manda o caracter de volta como nulo #0, é por isso.
Tem que fazer um esquema para substituir por outro sem acento. Talvez com um Array de caracteres, ou algo assim.


GOSTEI 0
Martins

Martins

01/09/2005

[quote:25590cfb1f=´Adriano Santos´]
Verdade [b:25590cfb1f]Martins[/b:25590cfb1f] também testei aqui, mas é porque ele manda o caracter de volta como nulo #0, é por isso.
Tem que fazer um esquema para substituir por outro sem acento. Talvez com um Array de caracteres, ou algo assim.[/quote:25590cfb1f]

Só pra constar!!!

Galera onde tem o 8) é um ´8´, se não for colocado vcs vão bloquear até o backspace, Ok!

[b:25590cfb1f]iMoreira[/b:25590cfb1f], já me falaram nos bastidores q tu manja muito de Delphi, então deve ter sido um vacilo comum a todos os programadores, stress, cansaço, sabe como é, qualquer alteração no código posta aqui q eu quero uma cópia dele.

Um abraço [b:25590cfb1f]iMoreira, Adriano, njuniorba[/b:25590cfb1f].

:wink:


GOSTEI 0
Imoreira

Imoreira

01/09/2005

Foi mal, não tinha atentado para esse detalhe.

Testei a do Martins e funciona legal
só tem que mandar o cursor para o fim da cadeia do edit.

ex.: edit.SelStart:=length(edit.text);

Fiz o teste no evento onChange.


GOSTEI 0
Martins

Martins

01/09/2005

Foi mal, não tinha atentado para esse detalhe. Testei a do Martins e funciona legal só tem que mandar o cursor para o fim da cadeia do edit. ex.: edit.SelStart:=length(edit.text); Fiz o teste no evento onChange.


Blz, iMoreira sem problema, e valeu pela dica tb.

Pronto juntos postamos a solução para o nosso amigo.

Um abraço!!!


GOSTEI 0
POSTAR