Ir ao conteúdo

Aniversariantes da semana com DateTimePicker


mm_edilson

Posts recomendados

Postado

Amigos, tenho um formulario que me dá os aniversariantes entre duas datas, através de dois DateTimePicker. Seleciono no primeiro a data inicial, e no segundo a data final, e o DBGrid me dá a lista. Funciona direitinho.

Porém, quero que meu formulário retorne os aniversariantes da semana atual automaticamente sempre que eu abrir.

Pra isso preciso que o DataTimePicker1 e o DataTimePicker2 já exibam as duas datas correspondentes automaticamente quando abrir o formulário.

Então fiz assim: criei uma função, que chamei de "DataPorExtenso" para retornar em um label, a data atual por extenso (somente o dia da semana). Então, se abro o formulário hoje (23/03/13), o Label retorna "Qua", se abrir amanhã, o mesmo vai retornar "Qui". Essa função funcionou beleza.

Então fui para a segunda parte. No "OnCreate" do form, fiz assim:

procedure TNivers1.FormCreate(Sender: TObject);
begin
Label3.Caption := DataPorExtenso;
If label3.Caption = 'Dom' then
DateTimePicker1.Date := Date;
DateTimePicker2.Date := Date +6;
If label3.Caption = 'Seg' then
DateTimePicker1.Date := Date -1;
DateTimePicker2.Date := Date +5;
If label3.Caption = 'Ter' then
DateTimePicker1.Date := Date -2;
DateTimePicker2.Date := Date +4;
If label3.Caption = 'Qua' then
DateTimePicker1.Date := Date -3;
DateTimePicker2.Date := Date +3;
If label3.Caption = 'Qui' then
DateTimePicker1.Date := Date -4;
DateTimePicker2.Date := Date +2;
If label3.Caption = 'Sex' then
DateTimePicker1.Date := Date -5;
DateTimePicker2.Date := Date +1;
If label3.Caption = 'Sab' then
DateTimePicker1.Date := Date -6;
DateTimePicker2.Date := Date;
end;

Ou seja, hoje é 20/03/13, o label recebeu "Qua", então o DateTimePicker1 precisa receber 17/03/2013 (hoje, quarta, menos 3 = domingo passado), e o DateTimePicker2 precisa receber 23/03/2013 (hoje, quarta, +3 = sábado).

Acontece que o DateTimePicker1 recebe a data calculada certinho, mas o DateTimePicker2 só retorna a data atual. Não consegui identificar o meu erro. Alguém pode ajudar?

Postado

O erro é que você esqueceu de colocar as diretivas "begin" e "end" após cada if...

Sem o "begin" e o "end", será executada apenas a linha abaixo do "if" que for aceito e em seguida executará qualquer outra instrução que não esteja abaixo de um if, e neste caso como os demais "if" também não contém "begin" e "end", no fim será executada a última linha, que no caso é "DateTimePicker2.Date := Date", o que faz com que o DateTimePicker2 fique sempre com a data atual.

Corrigindo o código:


procedure TNivers1.FormCreate(Sender: TObject);
begin
Label3.Caption := DataPorExtenso;
If label3.Caption = 'Dom' then
begin
DateTimePicker1.Date := Date;
DateTimePicker2.Date := Date +6;
end;
If label3.Caption = 'Seg' then
begin
DateTimePicker1.Date := Date -1;
DateTimePicker2.Date := Date +5;
end;
If label3.Caption = 'Ter' then
begin
DateTimePicker1.Date := Date -2;
DateTimePicker2.Date := Date +4;
end;
If label3.Caption = 'Qua' then
begin
DateTimePicker1.Date := Date -3;
DateTimePicker2.Date := Date +3;
end;
If label3.Caption = 'Qui' then
begin
DateTimePicker1.Date := Date -4;
DateTimePicker2.Date := Date +2;
end;
If label3.Caption = 'Sex' then
begin
DateTimePicker1.Date := Date -5;
DateTimePicker2.Date := Date +1;
end;
If label3.Caption = 'Sab' then
begin
DateTimePicker1.Date := Date -6;
DateTimePicker2.Date := Date;
end;
end;

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...