Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 07 de Junho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
40 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Dicas]  Digitando Nomes Próprios
Publicado por admin : Quarta, Março 16, 2011 - 09:03 GMT-3 (1108 leituras)
Comentários 1 Comentário   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador Olá! Gostaria de passar uma dica que vem me acompanhando há muito tempo, que é uma rotina para tratamento de Nomes Próprios. Fiz uma adaptação com toque pessoal a um código que encontrei na internet e estou disponibilizando o resultado.

A função ficou da seguinte maneira:

function Nome_Proprio(Texto : String) : String;
const
     cFixos : Array [01..14] Of String = ('A', 'E', 'O', 'As', 'Os', 
                                          'Da', 'De', 'Do', 'Das', 'Dos', 
                                          'Se', 'Á', 'À', 'É');
var
     Index  : Integer;
     IndFix : Integer;
     TxtAux : String;
begin
 
     Try
        {Limpa espaços no começo e no final}
        TxtAux := Trim(Texto);
 
        {Retira espaços desnecessários do texto}
        Repeat
           Index := Pos('  ', TxtAux);
           Delete(TxtAux, Index, 1);
        until Index = 0;
 
        {Torna a primeira letra das palavras maíuscula}
        Result := '';
 
        For Index := 1 To Length(TxtAux) Do
            Case Ord((Index = 1) Or ((Index > 1) And (TxtAux[Pred(Index)] = ' '))) Of
                 0 : Result := Result + AnsiLowerCase(TxtAux[Index]);
                 1 : Result := Result + AnsiUpperCase(TxtAux[Index]);
            End;
 
        {Acerta as palavras fixas (definidas pela constante cFixos)}
        For Index := Low(cFixos) To High(cFixos) Do
            Repeat
               IndFix := Pos(' ' + cFixos[Index] + ' ', Result);
 
               If IndFix > 0 Then
                  Begin
                       Delete(Result, Succ(IndFix), Length(cFixos[Index]));
                       Insert(AnsiLowerCase(cFixos[Index]), Result, Succ(IndFix));
                  End;
            Until (IndFix = 0);
     Except
        {Retorna o texto original no caso de algum erro}
        Result := Texto;
     End;
 
end;

Para usar a função, crie um novo projeto, coloque um TEdit no formulário e digite o seguinte código no evento OnChange do TEdit:

procedure TForm1.Edit1Change(Sender: TObject);
begin
 
     If (Trim(Edit1.Text) <> '') and (Edit1.Text[Length(Edit1.Text)] <> ' ') Then
        Begin
             Edit1.Text := Nome_Proprio(Edit1.Text);
             Edit1.SelStart := Length(Edit1.Text);
        End;
 
end;

É importante lembrar que a função pode ser usada onde e como quiser, bastando apenas chamá-la conforme o exemplo. A maneira descrita acima apenas dá um efeito visual bonito!

Por: Fabiano Novaes Ferreira - Analista Programador
Contato: fnovaes@habibs.com



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: imrmobile (vodkacom@limao.com.br) : Nov 21, 2011 - 01:20
(Informações sobre o membro | Enviar uma mensagem)
Esta função não poderia ser adaptada para um componente DBEdit? Se sim, como poderia ser feito?
Obrigado.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados