Fórum Bloquear acentos no formulário #441562
30/04/2013
0
Quero saber se alguém sabe me responder o que devo fazer para bloquear uso de acentos nos formulários da minha aplicação.
Utilizdo Delphi 7 e Delphi XE3.
Obrigado a todos...
Aloisio Santos
Curtir tópico
+ 0Posts
30/04/2013
Gabriel Baltazar
// Essa function fica numa unit separada function limpaCaracteresEspeciais(str: String): String; begin str := StringReplace(str, 'À', 'A', [rfReplaceAll]); str := StringReplace(str, 'Á', 'A', [rfReplaceAll]); str := StringReplace(str, 'Â', 'A', [rfReplaceAll]); str := StringReplace(str, 'Ã', 'A', [rfReplaceAll]); str := StringReplace(str, 'Ä', 'A', [rfReplaceAll]); str := StringReplace(str, 'Å', 'A', [rfReplaceAll]); str := StringReplace(str, 'Ç', 'C', [rfReplaceAll]); str := StringReplace(str, 'È', 'E', [rfReplaceAll]); str := StringReplace(str, 'É', 'E', [rfReplaceAll]); str := StringReplace(str, 'Ê', 'E', [rfReplaceAll]); str := StringReplace(str, 'Ë', 'E', [rfReplaceAll]); str := StringReplace(str, 'Ì', 'I', [rfReplaceAll]); str := StringReplace(str, 'Í', 'I', [rfReplaceAll]); str := StringReplace(str, 'Î', 'I', [rfReplaceAll]); str := StringReplace(str, 'Ï', 'I', [rfReplaceAll]); str := StringReplace(str, 'Ñ', 'N', [rfReplaceAll]); str := StringReplace(str, 'Ò', 'O', [rfReplaceAll]); str := StringReplace(str, 'Ó', 'O', [rfReplaceAll]); str := StringReplace(str, 'Ô', 'O', [rfReplaceAll]); str := StringReplace(str, 'Õ', 'O', [rfReplaceAll]); str := StringReplace(str, 'Ö', 'O', [rfReplaceAll]); str := StringReplace(str, 'Ù', 'U', [rfReplaceAll]); str := StringReplace(str, 'Ú', 'U', [rfReplaceAll]); str := StringReplace(str, 'Û', 'U', [rfReplaceAll]); str := StringReplace(str, 'Ü', 'U', [rfReplaceAll]); str := StringReplace(str, 'à', 'a', [rfReplaceAll]); str := StringReplace(str, 'á', 'a', [rfReplaceAll]); str := StringReplace(str, 'â', 'a', [rfReplaceAll]); str := StringReplace(str, 'ã', 'a', [rfReplaceAll]); str := StringReplace(str, 'ä', 'a', [rfReplaceAll]); str := StringReplace(str, 'å', 'a', [rfReplaceAll]); str := StringReplace(str, 'ç', 'c', [rfReplaceAll]); str := StringReplace(str, 'è', 'e', [rfReplaceAll]); str := StringReplace(str, 'é', 'e', [rfReplaceAll]); str := StringReplace(str, 'ê', 'e', [rfReplaceAll]); str := StringReplace(str, 'ë', 'e', [rfReplaceAll]); str := StringReplace(str, 'ì', 'i', [rfReplaceAll]); str := StringReplace(str, 'í', 'i', [rfReplaceAll]); str := StringReplace(str, 'î', 'i', [rfReplaceAll]); str := StringReplace(str, 'ï', 'i', [rfReplaceAll]); str := StringReplace(str, 'ñ', 'n', [rfReplaceAll]); str := StringReplace(str, 'ò', 'o', [rfReplaceAll]); str := StringReplace(str, 'ó', 'o', [rfReplaceAll]); str := StringReplace(str, 'ô', 'o', [rfReplaceAll]); str := StringReplace(str, 'õ', 'o', [rfReplaceAll]); str := StringReplace(str, 'ö', 'o', [rfReplaceAll]); str := StringReplace(str, 'ù', 'u', [rfReplaceAll]); str := StringReplace(str, 'ú', 'u', [rfReplaceAll]); str := StringReplace(str, 'û', 'u', [rfReplaceAll]); str := StringReplace(str, 'ü', 'u', [rfReplaceAll]); str := StringReplace(str, '`', '', [rfReplaceAll]); str := StringReplace(str, '´', '', [rfReplaceAll]); str := StringReplace(str, '^', '', [rfReplaceAll]); str := StringReplace(str, '¨', '', [rfReplaceAll]); str := StringReplace(str, '~', '', [rfReplaceAll]); str := StringReplace(str, 'ª', '', [rfReplaceAll]); str := StringReplace(str, 'º', '', [rfReplaceAll]); result := str; end;
NA unit do TEditPersonalizado
procedure Register;
begin
RegisterComponents('Componentes Personalizados', [TEditPersonalizado]);
end;
{ TEditPersonalizado }
constructor TEditPersonalizado.Create(AOwner: TComponent);
begin
inherited;
Properties.CharCase := ecUpperCase;
Properties.OnChange := limpaCaracter;
end;
procedure TEditPersonalizado.limpaCaracter(Sender: TObject);
begin
Text := limpaCaracteresEspeciais(Text);
SelStart := Length(Text);
end;
Gostei + 0
30/04/2013
Joel Rodrigues
Gostei + 0
30/04/2013
Gabriel Baltazar
Dei uma lida rápida aqui a respeito e gostei da sugestão, vou me aprofundar mais no assunto.
Valeu.
Gostei + 0
30/04/2013
Joel Rodrigues
Mas fica a dica para estudar, é legal.
Um abraço a todos.
Gostei + 0
01/05/2013
Marco Salles
Sem pretensão
http://marcosalles.wordpress.com/2013/04/14/dicas-removendo-acentos-de-uma-string-delphi/
Gostei + 0
24/07/2013
Aloisio Santos
Gostei + 0
24/07/2013
Marco Salles
por exemplo
procedure TSeuForm.SeuDataSetnomeSetText(Sender: TField; const Text: string);
type
USASCIIString = type AnsiString(20127);
var
C:Char;
begin
str:='';
for C in Text do
sender.AsString:= sender.AsString +String(USASCIIString(C));
end;
Gostei + 0
24/07/2013
Marco Salles
por exemplo
procedure TSeuForm.SeuDataSetnomeSetText(Sender: TField; const Text: string);
type
USASCIIString = type AnsiString(20127);
var
C:Char;
begin
//str:=''; *** Foi Lixo
for C in Text do
sender.AsString:= sender.AsString +String(USASCIIString(C));
end;
Gostei + 0
24/07/2013
Aloisio Santos
[Error] dm.pas(925): ';' expected but '(' found
[Error] dm.pas(930): Operator not applicable to this operand type
[Error] dm.pas(931): Incompatible types: 'Boolean' and 'procedure, untyped pointer or untyped parameter'
[Error] dm.pas(932): Expression expected but 'END' found
[Error] dm.pas(933): ';' expected but 'END' found
[Fatal Error] POLICaixa.dpr(83): Could not compile used unit 'dm.pas'
O que fazer agora???
Gostei + 0
24/07/2013
Marco Salles
Gostei + 0
24/07/2013
Aloisio Santos
DELPHI 7
MYSQL 5
NAVICAT 5
ZEOSLIB
Gostei + 0
25/07/2013
Marco Salles
DELPHI 7
MYSQL 5
NAVICAT 5
ZEOSLIB
Vc chegou a ver isto ??
http://marcosalles.wordpress.com/2013/04/14/dicas-removendo-acentos-de-uma-string-delphi/
Gostei + 0
21/09/2013
Aloisio Santos
Bom dia,
Um amigo meu de Duque de Caxias criou um código perfeito para esta problemática e ainda deu a condição de permitir acentos somente nos campos do tipo memo.
O seguinte código foi criado pelo Gleison-RJ.
Primeiro é necessário ativar o KeyPreview do form, em seguida no OnKeyPress do mesmo form, digita-se o seguinte código:
If (ActiveControl is TEdit) then
begin
if not (key in['a'..'z','0'..'9',#32,#8]) then
begin
key := #0;
end;
end;
Funcionou exatamente como eu queria e fica a dica para a galera.
Finalizo este post como RESOLVIDO.
Gostei + 0
21/09/2013
Marco Salles
!@#$%¨&*()_-+={}():<> tab Setas enfim uma enorme gama de caracteres
a rotina permite somente letras minúscula [a ate z] e dígitos 0 ate 9 além do espaço mais o backspace
bom deixar claro esta limitação , que ao meu ver diverge um pouco do seu pedido inciial
[]sds estou finalizando o tópico
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)