Jump to content


Foto

Primeira letra dos nomes em maiuscula para delphi 7



Existem 5 respostas neste tópico

#1 tommy    

tommy
  • Participante
  • 9 mensagens

Publicado 26 August 2003 - 02:06 PM


Oi pessoal, vi o outro tópico sobre essa funcao.
Mas eu preciso de uma funcao igual a essa s''o que
para delphi. Colocar as primeiras letras dos nomes
em maiusculas num edit. salvo que de, do, dos, da e
das n~ao devem ser modificadas.

Muito obrigado.

#2 O_moita    

O_moita
  • Participante
  • 2064 mensagens

Publicado 28 August 2003 - 11:05 AM

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;

Como usar:

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


#3 tommy    

tommy
  • Participante
  • 9 mensagens

Publicado 29 August 2003 - 09:59 AM

Grande Morita
Valeu por ter enviado a função.
já coloquei ela em funcionamento.

Abraços. Márcio

#4 Rafael Rascalhia    

Rafael Rascalhia
  • Participante
  • 872 mensagens

Publicado 26 September 2003 - 05:09 PM

----------------
tommy escreveu:


Oi pessoal, vi o outro tópico sobre essa funcao.
Mas eu preciso de uma funcao igual a essa s'o que
para delphi. Colocar as primeiras letras dos nomes
em maiusculas num edit. salvo que de, do, dos, da e
das n~ao devem ser modificadas.

Muito obrigado.

----------------

Não sei se você precisa ainda, eu uso essa que eu fiz, ela converte a primeira em maiúscula e quando encontra um espaço, converte a próxima em maiúscula também.

function TrrPrincipal.tratanome(aux: string): String;
var
  i: integer;
begin
  aux:=lowercase(aux);
  if length(aux)<>0
  then Begin
          aux[1]:=Upcase(aux[1]);
          for i:=2 to length(aux) do
            if aux[i]=' '
            then aux[i+1]:=Upcase(aux[i+1]);
          tratanome:=aux;
        End
  else tratanome:=';
end;


#5 caramuju    

caramuju
  • Participante
  • 14 mensagens

Publicado 26 September 2003 - 05:29 PM

legal


#6 tunicobgn    

tunicobgn
  • Participante
  • 3 mensagens

Publicado 04 June 2008 - 03:02 PM

a função está ok, até modifiquei um pouco...
mas...
é só aqui ou ela não converte para minúsculo as letras acentuadas ?
tenho que fazer alguma modificação ?

function UpperNome(const Nome: String): String;
var
	x : Integer;
	lista : Array[0..18] of String[03];

  function NaoAchaPreposicao(Palavra : String): Boolean;
  var
	  x : Integer;
  begin
	Result := True;
	for x := 0 to 18 do
	  if (Trim(Palavra) = lista[x]) then
		Result := False;
  end; // FUNCTION

begin

  if (Nome = '') Then
	Exit;

  Result := LowerCase(Nome);

  lista[0] := 'das';
  lista[1] := 'dos';
  lista[2] := 'de';
  lista[3] := 'do';
  lista[4] := 'da';
  lista[5] := 'o';
  lista[6] := 'a';
  lista[7] := 'os';
  lista[8] := 'as';
  lista[9] := 'em';
  lista[10] := 'na';
  lista[11] := 'no';
  lista[12] := 'até';
  lista[13] := 'ao';
  lista[14] := 'aos';
  lista[15] := 'com';
  lista[16] := 'dum';
  lista[17] := 'por';
  lista[18] := 'sob';

  Result := UpCase(Result[1]) + Copy(Result, 2, Length(Result));

  for x := 2 to Length(Nome) do
	begin
	  if (Nome[x] = #32) then
		if (Copy(LowerCase(Nome),x+1,1) <> 'e') then
		  if (NaoAchaPreposicao(Copy(LowerCase(Nome),x+1,3))) then
			Result := Copy(Result, 1, x) + UpCase(Result[x+1]) + Copy(Result, x+2, Length(Result));
	end; // FOR
end;