Código
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!
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009