Trabalhando com TDateTimePicker - Delphi

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Veja neste artigo como podemos simular a navegação entre os meses usando o TDateTimePicker no Delphi.

Olá pessoal, recebi um e-mail de um amigo, perguntando o seguinte:

“Wesley como eu posso fazer para criar uma tela de navegação com o TDateTimePicker, onde ao clicar no botão que represente ">" ele avance 1 mês, e quando clicar no "<" ele retroceda 1 mês.”

Pensando nisto, eu fiz um layout básico e montei uma estrutura com o seguinte.

Listagem 1: Lista de Componentes

    Label1: TLabel;
    Label2: TLabel;
    EdtDataFinal: TDateTimePicker;
    BtnMesProximo: TBitBtn;
    BtnMesAnterior: TBitBtn;
    EdtDataInicial: TDateTimePicker;

Veja como ficou meu layout

Figura 1. Layout

Figura 1. Layout

A minha ideia foi a seguinte, sempre pegar o último dia do mês(Data Final) e não alterar o dia inicial( Data Inicial ), mas isso você pode modificar sem problemas.

Iniciaremos Declarar uses na unit DateUtils.

Listagem 2: Declarando uses em DataUtils

unit uFrmPrincipal;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls, DateUtils;

Bom temos 2 TBitBtn, o primeiro se chama BtnMesProximo e o segundo BtnMesAnterior, vamos implementar o clique do BtnMesProximo.

Listagem 3: Implementando o onClick do BtnMesProximo

procedure TFrmPrincipal.BtnMesProximoClick(Sender: TObject);
Var
  xDia, xMes, xAno : Word;
  xDataFinal : TDateTime;
begin
  EdtDataInicial.DateTime := IncMonth(EdtDataInicial.DateTime,1);
  xDataFinal              := IncMonth(EdtDataFinal.DateTime,1);
  DecodeDate(xDataFinal, xAno, xMes, xDia);
  xDia                    := DaysInMonth(xDataFinal);
  EdtDataFinal.DateTime   := EncodeDate(xAno,XMes, xDia);
end;

Neste momento vamos implementar o click do BtnMesProximo

Listagem 4: Implementando o onClick do BtnMesProximo

procedure TFrmPrincipal.BtnMesAnteriorClick(Sender: TObject);
Var
  xDia, xMes, xAno : Word;
  xDataFinal : TDateTime;
begin
  EdtDataInicial.DateTime := IncMonth(EdtDataInicial.DateTime,-1);
  xDataFinal              := IncMonth(EdtDataFinal.DateTime,-1);
  DecodeDate(xDataFinal, xAno, xMes, xDia);
  xDia                    := DaysInMonth(xDataFinal);
  EdtDataFinal.DateTime   := EncodeDate(xAno,XMes, xDia);
end;

Clicando no BtnMesProximo você irá ver o seguinte:

Clicando no BtnMesProximo

Figura 2. Clicando no BtnMesProximo

Clicando no BtnMesAnterior você irá ver o seguinte:

Clicando no BtnMesAnterior

Figura 3. Clicando no BtnMesAnterior

Neste artigo foi mostrado como podemos utilizar as funções IncMonth e DaysInMonth, conforme foi falado, neste código iremos sempre apontar para o último dia do mês no EdtDataFinal, mas isso pode ser modificado.

Você pode usar este “recursos” para relatórios, ou qualquer outro tipo de filtro dentro do seu sistema onde você tenha um recurso de filtragem por data.

Um abraço e até o próximo artigo.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?