Array
(
)

ajuda com primeira letra maiuscula no edit

Njuniorba
   - 21 mar 2006

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!


Martins
   - 21 mar 2006

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

#Código


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


Martins
   - 21 mar 2006

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

boa sorte!!


Njuniorba
   - 21 mar 2006


Citação:
=´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


Emerson
   - 21 mar 2006

veja esse outro tópico:

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


Martins
   - 21 mar 2006


Citação:

Citação:
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


#Código


Edit1.text := UpperNome(Edit1.text);


Boa sorte!


Martins
   - 21 mar 2006

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

veja:

#Código


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


Boa sorte!!!


Njuniorba
   - 21 mar 2006


Citação:
=´emerson.en´]veja esse outro tópico:

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


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


Emerson
   - 21 mar 2006

faça assim no OnChange:#Código

var
i: integer;
begin
i := Edit1.SelStart;
Edit1.Text := FormataNome(Edit1.Text);
Edit1.SelStart := i;
end;



Facc
   - 01 fev 2007


Citação:
faça assim no OnChange:#Código

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


Emerson
   - 01 fev 2007

basta ligar os edits ao mesmo procedimento OnChange


Facc
   - 01 fev 2007


Citação:
basta ligar os edits ao mesmo procedimento OnChange


Sim... mas repare na função

var
i: integer;
begin
i := Edit1.SelStart;
Edit1.Text := FormataNome(Edit1.Text);
Edit1.SelStart := i;
end;


Não estaria funcionando apenas para o Edit1?


Emerson
   - 01 fev 2007

altere para:
#Código

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.