DATAS AUTOMÁTICAS COM EDIT
Bom dia pessoal!
Tenho 12 campos EDITS no primeiro campo vai receber a data de forma manual e quero que os outros edits receba as outras datas de vencimentos de forma automática. Como posso implementar isso?
Tenho 12 campos EDITS no primeiro campo vai receber a data de forma manual e quero que os outros edits receba as outras datas de vencimentos de forma automática. Como posso implementar isso?
Mailson Janoca
Curtidas 0
Melhor post
Natanael Ferreira
22/09/2016
Qual a diferença de dias entre as datas?
Se for um mês e o nome dos Edits forem sequenciais (Edit1, Edit2,.., Edit12), tente:
Adicione [b]DateUtils[/b] na uses form.
Se for um mês e o nome dos Edits forem sequenciais (Edit1, Edit2,.., Edit12), tente:
Adicione [b]DateUtils[/b] na uses form.
var
i: Integer;
Data: TDate;
begin
try
Data := StrToDate(Edit1.Text);
except
ShowMessage('Data Inválida');
Exit;
end;
for i := 2 to 12 do
begin
Data := IncMonth(Data);
TEdit(FindComponent('Edit' + IntToStr(i))).Text := DateToStr(Data);
end;
end;GOSTEI 1
Mais Respostas
Mailson Janoca
22/09/2016
Boa tarde!
Teria um modo de deixar os dias de vencimentos fixos e só mudar os meses e ano?
Teria um modo de deixar os dias de vencimentos fixos e só mudar os meses e ano?
GOSTEI 0
Natanael Ferreira
22/09/2016
O problema seria se o usuário deixar fixo os dia 29, 30 ou 31, você teria uma inconsistência porque nem todos os meses tem esses dias.
Fevereiro = Tem 28 ou 29 dias (Bissexto ou não).
Setembro = Tem 30 dias.
Janeiro = Tem 31 dias.
Por exemplo, se o usuário escolher a data 31/01/2016.
Você terá uma inconsistência, porque não existe a data 31/02/2016 (Fevereiro foi até 29 este ano).
Fevereiro = Tem 28 ou 29 dias (Bissexto ou não).
Setembro = Tem 30 dias.
Janeiro = Tem 31 dias.
Por exemplo, se o usuário escolher a data 31/01/2016.
Você terá uma inconsistência, porque não existe a data 31/02/2016 (Fevereiro foi até 29 este ano).
GOSTEI 1
Mailson Janoca
22/09/2016
Então no meu caso vou evitar essas datas. Tem alguma rotina nesse sentido?
GOSTEI 0
Natanael Ferreira
22/09/2016
Teste o código abaixo, testando inclusive os dias 28, 29, 30 e 31.
Se a data for um dia inexistente, o código buscará a data anterior válida.
var
i, cont: Integer;
Data: TDate;
begin
try
Data := StrToDate(Edit1.Text);
except
ShowMessage('Data Inválida');
Exit;
end;
cont := 1;
for i := 2 to 12 do
begin
TEdit(FindComponent('Edit' + IntToStr(i))).Text := DateToStr(IncMonth(Data, cont));
Inc(cont);
end;
end;Se a data for um dia inexistente, o código buscará a data anterior válida.
GOSTEI 1
Natanael Ferreira
22/09/2016
Se quiser evitar que o usuário escolha esses dias (29, 30 ou 31), teste:
var
i: Integer;
Data: TDate;
begin
try
Data := StrToDate(Edit1.Text);
except
ShowMessage('Data Inválida');
Exit;
end;
if DayOf(Data) in [29 .. 31] then
begin
ShowMessage('Dia Inválido');
Exit;
end;
for i := 2 to 12 do
begin
Data := IncMonth(Data);
TEdit(FindComponent('Edit' + IntToStr(i))).Text := DateToStr(Data);
end;
end;GOSTEI 1
Mailson Janoca
22/09/2016
Muito obrigado!!!!!!!!!!!!!
GOSTEI 0