Entwickler-Ecke

WinForms - DateTimePicker mit ShowUpDown, automatisch springen


Vegeto - Fr 31.01.14 14:51
Titel: DateTimePicker mit ShowUpDown, automatisch springen
Hallo,


ich habe ein DateTimePicker mit ShowUpDown = true...
Somit kann man mit den Pfeilbutton ein tag,monat, oder jahr entweder hoch oder runter klicken.
Doch jetzt wollte ich wissen gibt es vielleicht eine weitere eigenschaft oder funktion dass wenn ich zum Beispiel am 31.01.2014 beim Tag ein pfeil nach oben drücke so springt er automatisch auf 01.01.2014, doch ich möchte das er in einem endtag, also den 31.01.2014, auf 01.02.2014 springt.

Ich hoffe Ihr versteht mein anliegen und hoffe Ihr könnt mir helfen.

Lg


Tranx - Fr 31.01.14 15:58

Ich habe es über eine Globalvariable gelöst:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls;

type
  TForm1 = class(TForm)
    DateTimePicker1: TDateTimePicker;
    procedure DateTimePicker1Enter(Sender: TObject);
    procedure DateTimePicker1Change(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  GlobalDate : TDateTime;
implementation

{$R *.DFM}

procedure TForm1.DateTimePicker1Enter(Sender: TObject);
begin
  GlobalDate := DatetimePicker1.Date;
end;

procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin

  if DateTimePicker1.Date-GlobalDate<-25 then 
     DateTimePicker1.Date := GlobalDate+1
  else if DatetimePicker1.Date-GlobalDate>25 then
     DatetimePicker1.Date := GlobalDate-1;

  GlobalDate := DateTimePicker1.Date;
end;

end.


Ein Problem ist dabei die Behandlung, wenn ich mit den +/- - Tasten Monat oder Jahr ändern will. Das geht nicht. Komischerweise geht er nicht zur OnKeypress Routine. Muss mal schauen, was man da machen kann, ist aber wohl eher eine Krücke. Interessanterweise ist das +/- bei Tagen in Ordnung. Dann läuft der Tag auch weiter, wenn ich + drücke. Nur bei Monat und Tag kommt Müll raus.


Ralf Jansen - Fr 31.01.14 16:00

@Tranx : Es geht um Winforms nicht VCL