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:
('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.