Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Calendario


António44

Pergunta

Dias de 31 ou 29 no bisexto gera erro."Invalid argument to date encode".
alguém pode dar uma ajuda a contornar isso?


procedure TFormAgenda.ScrollBar1Change(Sender: TObject);
begin
     if ScrollBar1.Position=1 Then
      Panel1.Caption:='Janeiro'
     Else if ScrollBar1.Position=2 Then
      Panel1.Caption:='Fevereiro'
     Else if ScrollBar1.Position=3 Then
      Panel1.Caption:='Março'
     Else if ScrollBar1.Position=4 Then
      Panel1.Caption:='Abril'
     Else if ScrollBar1.Position= 5 Then
      Panel1.Caption:='Maio'
     Else if ScrollBar1.Position=6 Then
      Panel1.Caption:='Junho'
     Else if ScrollBar1.Position=7 Then
      Panel1.Caption:='Julho'
     Else if ScrollBar1.Position=8 Then
      Panel1.Caption:='Agosto'
     Else if ScrollBar1.Position=9 Then
      Panel1.Caption:='Setembro'
     Else if ScrollBar1.Position=10 Then
      Panel1.Caption:='Outubro'
     Else if ScrollBar1.Position=11 Then
      Panel1.Caption:='Novembro'
     Else if ScrollBar1.Position=12 Then
      Panel1.Caption:='Dezembro';
     if ScrollBar1.Position=13 Then begin
      ScrollBar1.Position:=1;
       Panel3.Caption:=FloatToStr(StrToFloat(Panel3.Caption)+1);
       
        end;
     if ScrollBar1.Position=0 Then begin
      ScrollBar1.Position:=12;
       Panel3.Caption:=FloatToStr(StrToFloat(Panel3.Caption)-1);
        end;
     Calendar1.Month:=ScrollBar1.Position;
   Calendar1.Year:=StrToInt(Panel3.Caption);
end;

 

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Voce não respondeu a minha pergunta....

O erro ocorre nessas linhas ?

     Calendar1.Month:=ScrollBar1.Position;
   Calendar1.Year:=StrToInt(Panel3.Caption);
"Argumento inválido para codificação de data".

significa que voce esta tentanto atribuir um valor invalido para a data

 

Link para o comentário
Compartilhar em outros sites

  • 0
11 horas atrás, Jhonas disse:

Voce não respondeu a minha pergunta....

O erro ocorre nessas linhas ?


     Calendar1.Month:=ScrollBar1.Position;
   Calendar1.Year:=StrToInt(Panel3.Caption);

"Argumento inválido para codificação de data".

significa que voce esta tentanto atribuir um valor invalido para a data

 

Sim,mas terá um jeito de ultrapassar isso? estou por exemplo com uma data de 31 seleccionada no Calendar e avanço para o més seguinte no scrollbar que será de 30 dias, como o 31 não existe no més dá erro. Como contorno isso? Ao avançar para o més seguinte se for de 30.

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que é isso que voce está querendo fazer

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin

     if ScrollBar1.Position=1 Then
      Panel1.Caption:='Janeiro'
     Else if ScrollBar1.Position=2 Then
      Panel1.Caption:='Fevereiro'
     Else if ScrollBar1.Position=3 Then
      Panel1.Caption:='Março'
     Else if ScrollBar1.Position=4 Then
      Panel1.Caption:='Abril'
     Else if ScrollBar1.Position= 5 Then
      Panel1.Caption:='Maio'
     Else if ScrollBar1.Position=6 Then
      Panel1.Caption:='Junho'
     Else if ScrollBar1.Position=7 Then
      Panel1.Caption:='Julho'
     Else if ScrollBar1.Position=8 Then
      Panel1.Caption:='Agosto'
     Else if ScrollBar1.Position=9 Then
      Panel1.Caption:='Setembro'
     Else if ScrollBar1.Position=10 Then
      Panel1.Caption:='Outubro'
     Else if ScrollBar1.Position=11 Then
      Panel1.Caption:='Novembro'
     Else if ScrollBar1.Position=12 Then
      Panel1.Caption:='Dezembro';

     if ScrollBar1.Position=13 Then
     begin
        ScrollBar1.Position:=1;
        Calendar1.Year := Calendar1.Year+1;
     end;

     if ScrollBar1.Position=0 Then
     begin
        ScrollBar1.Position:=12;
        Calendar1.Year := Calendar1.Year-1;
     end;

     Calendar1.Month:=ScrollBar1.Position;
     Panel3.Caption:= inttostr(Calendar1.Year);
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
5 horas atrás, Jhonas disse:

Acho que é isso que voce está querendo fazer


procedure TForm1.ScrollBar1Change(Sender: TObject);
begin

     if ScrollBar1.Position=1 Then
      Panel1.Caption:='Janeiro'
     Else if ScrollBar1.Position=2 Then
      Panel1.Caption:='Fevereiro'
     Else if ScrollBar1.Position=3 Then
      Panel1.Caption:='Março'
     Else if ScrollBar1.Position=4 Then
      Panel1.Caption:='Abril'
     Else if ScrollBar1.Position= 5 Then
      Panel1.Caption:='Maio'
     Else if ScrollBar1.Position=6 Then
      Panel1.Caption:='Junho'
     Else if ScrollBar1.Position=7 Then
      Panel1.Caption:='Julho'
     Else if ScrollBar1.Position=8 Then
      Panel1.Caption:='Agosto'
     Else if ScrollBar1.Position=9 Then
      Panel1.Caption:='Setembro'
     Else if ScrollBar1.Position=10 Then
      Panel1.Caption:='Outubro'
     Else if ScrollBar1.Position=11 Then
      Panel1.Caption:='Novembro'
     Else if ScrollBar1.Position=12 Then
      Panel1.Caption:='Dezembro';

     if ScrollBar1.Position=13 Then
     begin
        ScrollBar1.Position:=1;
        Calendar1.Year := Calendar1.Year+1;
     end;

     if ScrollBar1.Position=0 Then
     begin
        ScrollBar1.Position:=12;
        Calendar1.Year := Calendar1.Year-1;
     end;

     Calendar1.Month:=ScrollBar1.Position;
     Panel3.Caption:= inttostr(Calendar1.Year);
end;

abraço

  Teste assim ,data 31 de Agosto seleccionada no Calendar e avançe para o més seguinte no scrollbar que será Setembro  de 30 dias, como o 31 não existe no més  de Setembro dá erro.

Link para o comentário
Compartilhar em outros sites

  • 0
3 horas atrás, António44 disse:

  Teste assim ,data 31 de Agosto seleccionada no Calendar e avançe para o més seguinte no scrollbar que será Setembro  de 30 dias, como o 31 não existe no més  de Setembro dá erro.

Resolvido;

  
     if ScrollBar1.Position=1 Then
      Panel1.Caption:='Janeiro'
     Else if ScrollBar1.Position=2 Then
      Panel1.Caption:='Fevereiro'
     Else if ScrollBar1.Position=3 Then
      Panel1.Caption:='Março'
     Else if ScrollBar1.Position=4 Then
      Panel1.Caption:='Abril'
     Else if ScrollBar1.Position= 5 Then
      Panel1.Caption:='Maio'
     Else if ScrollBar1.Position=6 Then
      Panel1.Caption:='Junho'
     Else if ScrollBar1.Position=7 Then
      Panel1.Caption:='Julho'
     Else if ScrollBar1.Position=8 Then
      Panel1.Caption:='Agosto'
     Else if ScrollBar1.Position=9 Then
      Panel1.Caption:='Setembro'
     Else if ScrollBar1.Position=10 Then
      Panel1.Caption:='Outubro'
     Else if ScrollBar1.Position=11 Then
      Panel1.Caption:='Novembro'
     Else if ScrollBar1.Position=12 Then
      Panel1.Caption:='Dezembro';
     if ScrollBar1.Position=13 Then begin
      ScrollBar1.Position:=1;
       Panel3.Caption:=FloatToStr(StrToFloat(Panel3.Caption)+1);
        end;
     if ScrollBar1.Position=0 Then begin
      ScrollBar1.Position:=12;
       Panel3.Caption:=FloatToStr(StrToFloat(Panel3.Caption)-1);
        end;
Calendar1.NextMonth; Usando assim funciona na perfeição
     //Calendar1.Month:=ScrollBar1.Position;>>>>>>Retirado
   Calendar1.Year:=StrToInt(Panel3.Caption);

end;

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Ok ... mas observe os dias dos meses seguintes ( o dia que está selecionado ... exemplo:

31 de janeiro para o dia 28 de Fevereiro

28 de Fevereiro para o dia 31 de Março

31 de Março para o dia 30 de Abril

o código a seguir, soluciona esse problema ... se quiser usá-lo

var
  Form1: TForm1;
  dd : integer = 0;
  dia : integer = 0;
implementation

{$R *.dfm}

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin

     if ScrollBar1.Position=1 Then
      Panel1.Caption:='Janeiro'
     Else if ScrollBar1.Position=2 Then
      Panel1.Caption:='Fevereiro'
     Else if ScrollBar1.Position=3 Then
      Panel1.Caption:='Março'
     Else if ScrollBar1.Position=4 Then
      Panel1.Caption:='Abril'
     Else if ScrollBar1.Position= 5 Then
      Panel1.Caption:='Maio'
     Else if ScrollBar1.Position=6 Then
      Panel1.Caption:='Junho'
     Else if ScrollBar1.Position=7 Then
      Panel1.Caption:='Julho'
     Else if ScrollBar1.Position=8 Then
      Panel1.Caption:='Agosto'
     Else if ScrollBar1.Position=9 Then
      Panel1.Caption:='Setembro'
     Else if ScrollBar1.Position=10 Then
      Panel1.Caption:='Outubro'
     Else if ScrollBar1.Position=11 Then
      Panel1.Caption:='Novembro'
     Else if ScrollBar1.Position=12 Then
      Panel1.Caption:='Dezembro';

     if ScrollBar1.Position=13 Then
     begin
        ScrollBar1.Position:=1;
        Calendar1.Year := Calendar1.Year+1;
     end;

     if ScrollBar1.Position=0 Then
     begin
        ScrollBar1.Position:=12;
        Calendar1.Year := Calendar1.Year-1;
     end;


     case ScrollBar1.Position of
     2 :
        case Calendar1.Day of
          29: Calendar1.Day := Calendar1.Day-1;
          30: Calendar1.Day := Calendar1.Day-2;
          31: Calendar1.Day := Calendar1.Day-3;
        end;

     4,6,9,11 :
        case Calendar1.Day of
          31: Calendar1.Day := Calendar1.Day-1;
        end;

     end;

     Calendar1.Month:=ScrollBar1.Position;
     Panel3.Caption:= inttostr(Calendar1.Year);

     case Calendar1.Month of
      4,6,9,11 : Calendar1.Day := dia;
      1,3,5,7,8,10,12 : Calendar1.Day := dia;
     end;

end;

procedure TForm1.Calendar1Click(Sender: TObject);
begin
   if dd = 0 then
      begin
        dia := Calendar1.Day;
        dd := 1;
      end;
end;

procedure TForm1.Calendar1Exit(Sender: TObject);
begin
   if dd = 1 then
      dia := Calendar1.Day;
   dd := 0; 
end;

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...