Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Converter Para Maiúcula


Pirambu!

Pergunta

Estou precisando Converter as primeiras letras de um edit para maiúsculo "raimundo soares lima" para "Raimundo Soares Lima", eu tentei este código mas converte apenas a primeira letra da primeira palavra assim:

procedure TForm1.Edit1Change(Sender: TObject); 
var 
  OldStart : Integer; 
begin 
  With Edit1 do 
  if Text <> '' then begin 
  OnChange := NIL; 
  OldStart := SelStart; 
  Text := UpperCase(Copy(Text,1,1))+LowerCase(Copy(Text,2,Length(Text))); 
  SelStart := OldStart; 
  OnChange := Edit1Change; 
  end; 
end;
no caso eu precisaria identificar o espaço para que possa repetir o mando
Text := UpperCase(Copy(Text,1,1))+LowerCase(Copy(Text,2,Length(Text)));

alguém sabe como eu possa resolver isso?

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Guest --felipe --
alguém sabe como eu possa resolver isso?

bom deve te uma função que faça isso.. mas como eu não sei

da pra você fazer assim:

s:=edit5.text;
  for i:=1 to Length(s) do begin
    mata:=s[i];
    if i=1 then mata:=(Uppercase(s[i]))
    else if s[i-1]=' ' then mata:=(Uppercase(s[i]));
    s[i]:=mata[1];
  end;
  edit5.text:=s;

~

a variavel aux é só porque da um erro de conversão entre "Char" e "String"

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

function ValidateString(Source :string; StrList: array of string) :Boolean;
var
  Idx :Integer;
begin
  Result := False;
  Idx := 0; // Incializa índice para a StrList
  // Enquanto não processar todas a palavras na lista e Source não fizer parte dela
  while (Idx < Length(StrList)) and not Result do
  begin
    Result := Source = StrList[Idx];
    Inc(Idx);
  end;
end;

function FirstCharUpper(Source :String) :String;
var
  Idx :Integer;
  StrWord :String;
begin
  Result := '';
  if Source = '' then
    Exit;
  Source := Trim(Source); // retira qualquer espaço extra
  repeat
    Idx := Pos(' ', Source); // Identifica o término da primeira palavra
    if Idx > 0 then // Se há espaço, há uma nova palavra após a encontrada
    begin
      StrWord := LowerCase(Trim(Copy(Source, 1, Idx-1))); // Isola primeira palavra de Source convertendo-a para minuscula
      if (Result = '') or // Se é primeira palavra ou não é uma das filtradas, converte primeira letra
        not ValidateString(StrWord, ['do', 'da', 'de', 'dos', 'e', 'das', 'na', 'no', 'nas', 'nos']) then
        StrWord := UpCase(StrWord[1]) +Copy(StrWord, 2, Length(StrWord));
      Source := Trim(Copy(Source, Idx +1, Length(Source))); // Retira primeira palavra de Source
      Result := Result +StrWord +' '; // Concatena palavras processadas, formando o resultado final
    end else // última palavra em Source a ser processada
      Result := Result +UpCase(Source[1]) +LowerCase(Copy(Source, 2, Length(Source)));
    until Idx = 0;
end;
Micheus, estou usando as funções acima como você indicou, Eu tentei assim:
TForm1.Edit1Change(Sender: TObject);
begin
edit1.text := FirstCharUpper(edit1.text);
end;

mas estar dando erro,

Verifica onde estou errando.

Link para o comentário
Compartilhar em outros sites

  • 0
Micheus, estou usando as funções acima como você indicou, Eu tentei assim:

TForm1.Edit1Change(Sender: TObject);
begin
  edit1.text := FirstCharUpper(edit1.text);
end;
mas estar dando erro, Verifica onde estou errando.
Independente do uso da função, sempre que você fizer isto (alterar o conteúdo de um edit, dentro do evento OnChange) vai com certeza ter erro - voce estará provocando uma recursão infinita. Captou?! Quando precisar fazer algo assim, desative o evento antes de mudar o conteúdo do texto. Mas sempre que possível, dê preferência a fazer este tipo de coisa no evento OnExit. ;) Para desativar:
TForm1.Edit1Change(Sender: TObject);
begin
  edit1.OnChange := nil; // remove tratador do evento
  edit1.text := FirstCharUpper(edit1.text);
  edit1.OnChange := Edit1Change;  // recoloca
end;

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...