Pretendo demonstrar neste artigo uma aplicação Delphi para definir uma data por extenso obtendo como resultado, por exemplo: Pato Branco, 3 de janeiro de 2012 (terça-feira).
[1º Passo] Formulário Principal
Observe que as caixas de textos explicativos utilizadas na figura apresentam a ordem sequencial e o nome do componente, a página da sua localização e as propriedades que devem ser alteradas com os respectivos valores.
[2º Passo] implementation
a) Referência a unit "DateUtils" necessária na utilização da função DayOfTheWeek para retornar um valor que corresponde ao dia da semana de uma variável do tipo TDateTime. DayOfTheWeek retorna um valor entre 0 e 6, onde: 0=domingo; 1=segunda-feira; ...; e, 6=sábado.
uses DateUtils;
function NomeDoMes(i: word; tipo: integer): string;
const mes: array[1..12] of string = ('janeiro', 'fevereiro',
'março', 'abril', 'maio', 'junho', 'julho', 'agosto',
'setembro', 'outubro', 'novembro', 'dezembro');
begin
if (tipo = 0)
then NomeDoMes := mes[i] // extenso
// a função "copy" retorna os 3 primeiros caracteres de "mes[i]"
else NomeDoMes := copy(mes[i], 1, 3); // abreviado
end;
function DiaDaSemana(i: word; tipo: integer): string;
const diasem: array[0..6] of string = ('domingo', 'segunda-feira',
'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira',
'sábado');
begin
if (tipo = 0)
then DiaDaSemana := diasem[i] // extenso
// a função "copy" retorna os 3 primeiros caracteres de "diasem[i]"
else DiaDaSemana := copy(diasem[i], 1, 3);
end;
function DataPorExtenso(cidade: string; dt: TDateTime): string;
var d, m, a, ds: word;
begin
// retorna os valores ano, mês e dia da variável "dt"
DecodeDate(dt, a, m, d);
ds := DayOfTheWeek(dt);
DataPorExtenso := cidade + ', ' + IntToStr(d) + ' de ' +
NomeDoMes(m, 0) + ' de ' + IntToStr(a) + ' (' +
DiaDaSemana(ds, 1) + ').';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// now = data atual (data do sistema operacional)
Edit2.Text := DataPorExtenso(Edit1.Text, now);
end;
Informar o nome da cidade e pressionar o botão "Extenso da Data" e o seguinte resultado será exibido:
As funções implementadas: NomeDoMes, DiaDaSemana e DataPorExtenso, poderiam ser disponibilizadas em uma unidade ou biblioteca de códigos (unit). As units representam no Delphi a forma de disponibilizar um conjunto de subprogramas (functions e/ou procedures) destinados a solucionar uma série de tarefas bastante corriqueiras com o propósito da "reutilização de código".
Obrigado e um abraço.
Prof. Omero Francisco Bertol (http://www.pb.utfpr.edu.br/omero/)
Download da Aplicação (http://www.pb.utfpr.edu.br/omero/Delphi/Artigos/DataExtensoDelphi.rar)