Buscar

Trabalhando com datas Abreviadas

Código

Segue a função, com a explicação de como utilizá-la logo abaixo:

function TForm1.CalcMes(data: string): string;
Const
  S: String = '%s: %d';
var
  Y, M, mes: Integer;
  mesdata, Meses, dias, complet: String;
begin
  mesdata := UpperCase(copy(trim(data), 1, 3));
  if length(mesdata) > 0 then
  begin
    if mesdata = 'JAN' then
      mes := 01
    else if mesdata = 'FEV' then
      mes := 02
    else if mesdata = 'MAR' then
      mes := 03
    else if mesdata = 'ABR' then
      mes := 04
    else if mesdata = 'MAI' then
      mes := 05
    else if mesdata = 'JUN' then
      mes := 06
    else if mesdata = 'JUL' then
      mes := 07
    else if mesdata = 'AGO' then
      mes := 08
    else if mesdata = 'SET' then
      mes := 09
    else if mesdata = 'OUT' then
      mes := 10
    else if mesdata = 'NOV' then
      mes := 11
    else if mesdata = 'DEZ' then
      mes := 12;
  end;
 
  Y := strtoint('20' + trim(copy(data, 5, 6)));
  M := mes;
  Meses := Format(S, [ShortMonthNames[M], MonthDays[IsLeapYear(Y), M]]);
  dias := trim(copy(Meses, 5, 6));
  complet := dias + '/' + inttostr(M) + '/' + inttostr(Y);
  result := ('01/') + inttostr(M) + '/' + (inttostr(Y)) + '  ' + (complet);
end;
Para ver o código funcionando, insira 1 ComboBox, 1 Button e 2 DateTimePicker. No evento onShow do formulário, faça:

procedure TForm1.FormShow(Sender: TObject);
var
  i: Integer;
  ano: String;
begin
  //código para preencher o combo com os 12 meses do ano
  combobox1.Items.Clear;
  ano := FormatDateTime('YYYY', Date);
  for i := 1 to 12 do
    ComboBox1.Items.Add(
      UpperCase(
        ShortMonthNames[i] +
        FormatDateTime('/YY', Date)
      )
    );
end;
Agora, no onClick do button:

procedure TForm1.Button1Click(Sender: TObject);
var
  data1,data2,datas:string;
begin
  datas := CalcMes(ComboBox1.text);
  data1 := copy(datas, 1, 10);
  data2 := copy(datas, 11, 14);
  DateTimePicker1.Date := strtodatetime(TRIM(data1));
  DateTimePicker2.Date := strtodatetime(TRIM(data2));
end;

Para testar, rode a aplicação, selecione um mês no combobox e clique no botão. Você verá os dois DateTimePicker respectivamente preenchidos com as datas inicial e final do mês selecionado!

 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Data e hora
Adicionada dia: 10/11/10
Por: Deivdy Souza
Visualizada: 3975 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009