Esse artigo faz parte da revista Clube Delphi edição 12. Clique aqui para ler todos os artigos desta edição



Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.

Data por extenso

Coloque a data por extenso no hint de sua aplicação

 

         É incrível como na programação há várias maneiras de chegar a um mesmo objetivo. Os livros de lógica e as dicas sobre determinado assunto na internet afirmam o que escrevo.        Uma coisa que me chamou a atenção e resolvi compartilhar com vocês é como colocar a data por extenso no hint da aplicação.  Criei para esta matéria duas funções que fazem a mesma coisa. A primeira é uma versão melhorada do que eu mais vejo nas aplicações comerciais, onde creio ser a mais usada. A segunda é a forma que utilizo (e que considero a melhor). Vamos lá:

 

Na cláusula var da aplicação, crie o vetor abaixo:

 

AMes:Array [1..12]Of String =

        ('JAN',

        'FEV',

        'MAR',

        'ABR',

        'MAI',

        'JUN',

        'JUL',

        'AGO',

        'SET',

        'OUT',

        'NOV',

        'DEZ');

 

Agora, crie a função a seguir:

 

Function DataAtual:String;

var

 Dia, Mes, Ano: Word;

begin

 DecodeDate(Now,Ano,Mes,Dia);

 Result: ='Florianópolis, '+IntToStr(Dia)+

        ' de '+AMes[Mes]+' de '+IntToStr(Ano)

end;

 

         Bom, é isto. Observe que os valores do vetor AMes são formados por três caracteres. Fiz isto apenas como forma ilustrativa, o leitor pode colocar o mês por extenso. Dentro da função é que tudo acontece. Apenas convertemos o resultado inteiro em string e concatenamos para ter o objetivo desejado. A ilustração abaixo mostra o resultado de nossa função:

 

 

 

Já vi coisas muito maiores na internet. Mas gosto de reduzir ao máximo o meu código e então fui atrás de outra solução. Observe o código abaixo:

 

 

FormatDateTime('"Olá, hoje é" dddd, dd "de" mmmm" de "yyyy',Now)

 

 

         Uso a função FormatDateTime do Delphi para retornar todas as informações sobre a data atual, e o resultado é ilustrado ao lado.

 

         Para colocar o mês e o dia em capitular basta utilizar o código abaixo:

 

Function DataAtual:String;

var

 Ano,Dia,DiaExtenso,MesExtenso:String;

begin

 Dia:=FormatDateTime('dd',Now);

 Ano:=FormatDateTime('yyyy',Now);

 DiaExtenso:=FormatDateTime('dddd',Now);

 MesExtenso:=FormatDateTime('mmmm',Now);

 DiaExtenso[1]:=UpCase(DiaExtenso[1]);

 MesExtenso[1]:=UpCase(MesExtenso[1]);

result:='Olá, Hoje é '+DiaExtenso+', '+Dia+' de '+MesExtenso+' de '+Ano;

end;

 

 

         Esta é a solução que adoto, até encontrar uma outra melhor. Claro, estou partindo do pressuposto que  a versão do Windows do cliente é a português (Brasil). É isto pessoal, e até a próxima.