Fórum nao usar acentos no edit #294238

01/09/2005

0

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

Responder

Posts

01/09/2005

Adriano Santos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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.


Responder

Gostei + 0

02/09/2005

Martins

[quote:76467eacdc=´Adriano Santos´]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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!!!


Responder

Gostei + 0

02/09/2005

Imoreira

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


Responder

Gostei + 0

02/09/2005

Adriano Santos

Tem sim [b:89803f8899]Adriano[/b:89803f8899] Fica mais ou menos assim:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;

Ler Mais...



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?


Responder

Gostei + 0

02/09/2005

Martins

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:


Responder

Gostei + 0

02/09/2005

Adriano Santos

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.


Responder

Gostei + 0

02/09/2005

Martins

[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:


Responder

Gostei + 0

02/09/2005

Imoreira

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.


Responder

Gostei + 0

02/09/2005

Martins

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!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar