Entwickler-Ecke

WinForms - Bestimmen ob DateTimePicker Tag weiter oder zurück


Vegeto - Fr 24.01.14 10:53
Titel: Bestimmen ob DateTimePicker Tag weiter oder zurück
Hallo...

ich habe hier ein DateTimePicker, wie kann ich jz sehen oder bestimmen, dass wenn der DateTimePicker sein Datum verändert(ValueChanged), ob er ein tag höher oder ein Tag zurück gegangen ist?

Damit ist gemeint, wenn das DateTimePicker Value im moment auf 24.01.2014 ist, aber dieser auf 25.01.2014 oder 23.01.2014 (oder sogar 24.09.2013, 29.07.2014) verändert wird, das sind ja zustände entweder in die Zukuft(hoch) oder in die Vergangenheit(runter). Ob man das irgendwie auslesen kann also ob es eine Methode gibt die sagt Datetime isUp oder DateTime isDown????

Lg


Th69 - Fr 24.01.14 10:59

Hallo Vegeto,

merke dir doch einfach den aktuellen Wert (in einer eigenen Variablen) und vergleiche dann den geänderten Wert damit.


Vegeto - Fr 24.01.14 11:05

Habe auch an das gedacht ^^

doch ich dachte vielleicht gibt es einen noch einfacheren weg, wo man nur paar schaurauben drehen muss
Aber wenn es nichts anderes gibt, dann mache ich das so...

Danke zunächst :)


Tranx - Fr 24.01.14 11:12

Du könntest in der OnEnter-Ereignisroutine den aktuellen Wert in einer globalen TDateTime-Variablen speichern und dann in der OnChange-Routine abfragen ob der aktuelle Wert > oder < der globalen Variablen ist. Und am Ende dann die globale Variable mit dem neuen Wert speichern, falls Du jedesmal diese Abfrage haben möchtest. Und als Speichervariable für diese Abfrage könntest Du ja die property TAG der Komponente nehmen:


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:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
unit Datetimpickertest;

interface

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

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

var
  Form1: TForm1;
  GlobalDatum : TDateTime;

implementation

{$R *.DFM}

procedure TForm1.DateTimePicker1Enter(Sender: TObject); // Routine nur für TDatetimepickerkomponenten nutzen!!
begin
  GlobalDatum := (Sender as TDateTimePicker).Date;
end;

procedure TForm1.DateTimePicker1Change(Sender: TObject);  // Routine nur für TDatetimepickerkomponenten nutzen!!
var
  t : TDateTime;
  o : TDateTimePicker;  // um das Tag der Komponente anzusprechen
begin
  o := Sender as TDatetimePicker;
  t := o.Date;
  if (t>GlobalDatum) then
     o.Tag := 1
  else if (t=GlobalDatum) then
     o.Tag := 0
  else
     o.Tag := -1;
  GlobalDatum := t;
  Edit1.Text := 'Eintrag wurde wie geändert: ' + IntToStr(o.Tag);
end;

end.


Vegeto - Fr 24.01.14 11:24

Danke, versuche ich einzubauen...

TY