ajuda com primeira letra maiuscula no edit
ola amigos preciso de uma funçao que deixe somente a primeira letra maiuscula, respeitando nomes proprios e excluindo complementos (dos,das,de,da) dos nomes pra maiuscula e no final fique assim:
ex:
Fulano da Silva Santana
Maria Helenda de Paula
Carlos dos Santos da Silva
Maria das Graças Santos
gostaria de utilizar esta funçao enquanto digito
[]´
agradeço a ajuda!
ex:
Fulano da Silva Santana
Maria Helenda de Paula
Carlos dos Santos da Silva
Maria das Graças Santos
gostaria de utilizar esta funçao enquanto digito
[]´
agradeço a ajuda!
Njuniorba
Curtidas 0
Respostas
Martins
21/03/2006
use a função abaixo, mas para usar no OnChange do controle, vc terá q modificar algumas coisas.
Boa sorte!!!
function UpperNome(const Nome: String): String; var x : Integer; lista : Array[0..4] of String[03]; function NaoAchaPreposicao(Palavra : String): Boolean; var x : Integer; begin Result := True; for x := 0 to 4 do if Trim(Palavra) = lista[x] then Result := False; end; begin Result := Nome; lista[0] := ´das´; lista[1] := ´dos´ ; lista[2] := ´de´; lista[3] := ´do´ ; lista[4] := ´da´; Result := UpCase(Result[1]) + Copy(Result, 2, Length(Result)); for x := 2 to Length(Nome) do begin if Nome[x] = 32 then if Copy(Nome,x+1,1) <> ´e´ then if NaoAchaPreposicao(Copy(Nome,x+1,3)) then Result := Copy(Result, 1, x) + UpCase(Result[x+1]) + Copy(Result, x+2, Length(Result)); end; end;
Boa sorte!!!
GOSTEI 0
Martins
21/03/2006
Uma outra alternativa é vc ativar a função no evento OnExit do controle, qualquer coisa posta aqui q tentaremos ajudá-lo.
boa sorte!!
boa sorte!!
GOSTEI 0
Njuniorba
21/03/2006
[quote=´Martins´]Uma outra alternativa é vc ativar a função no evento OnExit do controle, qualquer coisa posta aqui q tentaremos ajudá-lo.
boa sorte!!
boa sorte!!
como uso estas funções??
[]´s
GOSTEI 0
Emerson Nascimento
21/03/2006
veja esse outro tópico:
[url]http://forum.clubedelphi.net/viewtopic.php?t=73567[/url]
[url]http://forum.clubedelphi.net/viewtopic.php?t=73567[/url]
GOSTEI 0
Martins
21/03/2006
[quote:d8f60f7b55=´Martins´]Uma outra alternativa é vc ativar a função no evento OnExit do controle, qualquer coisa posta aqui q tentaremos ajudá-lo.
boa sorte!!
como uso estas funções??
[]´s[/quote:d8f60f7b55]
Edit1.text := UpperNome(Edit1.text);
Boa sorte!
GOSTEI 0
Martins
21/03/2006
Olhei o código postado pelo Emerson em outro tópico e está bem melhor.
veja:
Boa sorte!!!
veja:
Edit1.Text := FormataNome(Edit1.text);
Boa sorte!!!
GOSTEI 0
Njuniorba
21/03/2006
[quote=´emerson.en´]veja esse outro tópico:
[url]http://forum.clubedelphi.net/viewtopic.php?t=73567[/url]
[url]http://forum.clubedelphi.net/viewtopic.php?t=73567[/url]
No caso so funciona em UpperCase e no onexit, a minha ideia era o cara ir digitando Onchange e ja ir formatando automaticamente, se ele nao utilzasse o capslock ativo..
[]´s
GOSTEI 0
Emerson Nascimento
21/03/2006
faça assim no OnChange:
var i: integer; begin i := Edit1.SelStart; Edit1.Text := FormataNome(Edit1.Text); Edit1.SelStart := i; end;
GOSTEI 0
Facc
21/03/2006
faça assim no OnChange:
var i: integer; begin i := Edit1.SelStart; Edit1.Text := FormataNome(Edit1.Text); Edit1.SelStart := i; end;
Como posso usar essa função acima funcionar para mais de um Edit, digitando apenas uma vez no OnChange e ligar nos demais Edits???
GOSTEI 0
Emerson Nascimento
21/03/2006
basta ligar os edits ao mesmo procedimento OnChange
GOSTEI 0
Facc
21/03/2006
basta ligar os edits ao mesmo procedimento OnChange
Sim... mas repare na função
var
i: integer;
begin
i := [b:64c5439537]Edit1[/b:64c5439537].SelStart;
[b:64c5439537]Edit1[/b:64c5439537].Text := FormataNome([b:64c5439537]Edit1[/b:64c5439537].Text);
[b:64c5439537]Edit1[/b:64c5439537].SelStart := i;
end;
Não estaria funcionando apenas para o Edit1?
GOSTEI 0
Emerson Nascimento
21/03/2006
altere para:
assim o procedimento irá trabalhar com o objeto de forma abstrata.
var i: integer; begin i := TEdit(Sender).SelStart; TEdit(Sender).Text := FormataNome(TEdit(Sender).Text); TEdit(Sender).SelStart := i; end;
assim o procedimento irá trabalhar com o objeto de forma abstrata.
GOSTEI 0