21/03/2006

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!


Njuniorba

Respostas

21/03/2006

Martins

use a função abaixo, mas para usar no OnChange do controle, vc terá q modificar algumas coisas.

function UpperNome(const Nome: String): String;
var
x : Integer;
lista : Array[0..4&93; of String&91;03&93;;

function NaoAchaPreposicao(Palavra : String): Boolean;
var
x : Integer;
begin
Result := True;
for x := 0 to 4 do
if Trim(Palavra) = lista&91;x&93; then
Result := False;
end;
begin
Result := Nome;

lista&91;0&93; := ´das´; lista&91;1&93; := ´dos´ ;
lista&91;2&93; := ´de´; lista&91;3&93; := ´do´ ;
lista&91;4&93; := ´da´;

Result := UpCase(Result&91;1&93;) + Copy(Result, 2, Length(Result));

for x := 2 to Length(Nome) do begin
if Nome&91;x&93; = 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&93;)
+ Copy(Result, x+2, Length(Result));
end;
end;


Boa sorte!!!


Responder Citar

21/03/2006

Martins

Uma outra alternativa é vc ativar a função no evento OnExit do controle, qualquer coisa posta aqui q tentaremos ajudá-lo.

boa sorte!!


Responder Citar

21/03/2006

Njuniorba

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


Responder Citar

21/03/2006

Emerson

veja esse outro tópico:

[url]http://forum.clubedelphi.net/viewtopic.php?t=73567[/url]


Responder Citar

21/03/2006

Martins

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


Responder Citar

21/03/2006

Martins

Olhei o código postado pelo Emerson em outro tópico e está bem melhor.

veja:

  Edit1.Text := FormataNome(Edit1.text); 


Boa sorte!!!


Responder Citar

21/03/2006

Njuniorba

veja esse outro tópico: [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


Responder Citar

21/03/2006

Emerson

faça assim no OnChange:
var
  i: integer;
begin
  i := Edit1.SelStart;
  Edit1.Text := FormataNome(Edit1.Text);
  Edit1.SelStart := i;
end;



Responder Citar

01/02/2007

Facc

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


Responder Citar

01/02/2007

Emerson

basta ligar os edits ao mesmo procedimento OnChange


Responder Citar

01/02/2007

Facc

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?


Responder Citar

01/02/2007

Emerson

altere para:
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.


Responder Citar