Caros Amigos,

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;
b) Função que retorna o nome do mês com os parâmetros: "i" = índice para o vetor "mes"; e, "tipo" = 0 para retornar o nome completo e 1 para o nome abreviado do mês.
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;
c) Função que retorna o dia da semana com os parâmetros: "i" = índice para o vetor "diasem"; e, "tipo" = 0 para retornar o nome completo e 1 para o nome abreviado do dia da semana.
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;
d) Função que retorna a data por extenso com os parâmetros: "cidade" = nome da cidade; e, "dt" = data.
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;
e) Evento "onClick" do botão "Extenso da Data".
procedure TForm1.Button1Click(Sender: TObject);
begin
// now = data atual (data do sistema operacional)
  Edit2.Text := DataPorExtenso(Edit1.Text, now);
end;
[3º Passo] Executando a Aplicação
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)