ajuda com primeira letra maiuscula no edit

21/03/2006

0

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

Njuniorba

Responder

Posts

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


Responder

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

21/03/2006

Njuniorba

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


como uso estas funções??

[]´s


Responder

21/03/2006

Emerson Nascimento

veja esse outro tópico:

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


Responder

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

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

21/03/2006

Njuniorba

[quote=´emerson.en´]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

21/03/2006

Emerson Nascimento

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



Responder

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

01/02/2007

Emerson Nascimento

basta ligar os edits ao mesmo procedimento OnChange


Responder

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

01/02/2007

Emerson Nascimento

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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar