Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datum festlegen mit änlichem wie TDateTimePicker (https://www.delphipraxis.net/99771-datum-festlegen-mit-aenlichem-wie-tdatetimepicker.html)

Cheffu 17. Sep 2007 15:42


Datum festlegen mit änlichem wie TDateTimePicker
 
Hallo,
mit TDateTimePicker kann man ja das aktuelle Datum und die Zeit auslesen.
Wenn es visible ist kann man auch die Zeit verändern, aber diese spielt dann keine Rolle, da als Wert immer das aktuelle Datum und nicht das ausgewählte Datum genommen wird.
Gibt es ein ähnliches Element, mit dem man mit dem ausgewählten Datum arbeiten kann?

mfg
Cheffu

SubData 17. Sep 2007 15:43

Re: Datum festlegen mit änlichem wie TDateTimePicker
 
Wenn du das Datum eines TDateTimePicker änderst, dann ist das ausgewählte Datum: TDateTimePicker.DateTime (oder .Date)

Cheffu 17. Sep 2007 16:50

Re: Datum festlegen mit änlichem wie TDateTimePicker
 
Das ist bei mir eben leider nicht so.
Wenn ich es wie in dem folgenden Code mache (der in onChange des TDateTimePicker steht), dann gibt er immer nur das aktuelle Datum aus und nicht das ausgewählte.
Delphi-Quellcode:
DatumAusleser.Date:=Date; // DatumAusleser: TDateTimePicker;
Edit1.Text:=DateToStr(Date);
mfg
Cheffu

Hobby-Programmierer 17. Sep 2007 16:56

Re: Datum festlegen mit änlichem wie TDateTimePicker
 
Hallo ...,
Zitat:

Zitat von Cheffu
Delphi-Quellcode:
DatumAusleser.Date:=Date; // DatumAusleser: TDateTimePicker;
Edit1.Text:=DateToStr(Date);

vielleicht so
Delphi-Quellcode:
Edit1.Text:= DateToStr(DatumAusleser.Date);
LG Mario

[edit] ... den Code im OnChange Event des DTPicker Event einfügen

shmia 17. Sep 2007 18:33

Re: Datum festlegen mit änlichem wie TDateTimePicker
 
Man kann entweder nur das Datum oder nur die Uhrzeit anzeigen/editieren (siehe Property Kind).
Willst du beides, dann brauchst du 2 DateTimePicker.
Delphi-Quellcode:
var
   datumunduhrzeit : TDateTime;
begin
   datumunduhrzeit := Int(DateTimePicker1.Date)+Frac(DateTimePicker2.Time);
Die Funktionen Int() und Frac() sind eigentlich unnötigt, aber zumindest bei Delphi 5 hat die Komponente einen Bug, den man so umgeht.

SubData 18. Sep 2007 06:56

Re: Datum festlegen mit änlichem wie TDateTimePicker
 
Date ist im übrigen eine eigene Funktion, die immer das aktuelle Datum zurückliefert ;>

shmia 18. Sep 2007 09:15

Re: Datum festlegen mit änlichem wie TDateTimePicker
 
Zitat:

Zitat von SubData
Date ist im übrigen eine eigene Funktion, die immer das aktuelle Datum zurückliefert ;>

Eigentlich ja, aber da ist ein Bug in der VCL.
Das Property Date ist von der Klasse TCommonCalendar geerbt.
Delphi-Quellcode:
function TCommonCalendar.GetDate: TDate;
begin
  // der Cast-Operator macht eigentlich gar nichts
  // insbesondere wird der Zeitanteil nicht abgetrennt
  // das wird dann zum Problem, wenn
  Result := TDate(FDateTime);
 
  // richtig wäre gewesen
  // die Funktion Int() gibt nur den ganzzahligen Anteil der Tage zurück
  // Result := Int(FDateTime);
end;

SubData 18. Sep 2007 09:38

Re: Datum festlegen mit änlichem wie TDateTimePicker
 
Öhm, ja das kann gut sein.
Das ist aber in diesem Fall garnicht mal der ausschlaggebende Punkt.

Viel mehr ist hier das Problem, dass "Date" als Variable verwendet wurde, was aber nicht funktioniert, da es eine Funktion ist.
Ich gehe jetzt mal davon aus, dass "Date" nicht explizit neu deklariert wurde.

RavenIV 18. Sep 2007 10:23

Re: Datum festlegen mit änlichem wie TDateTimePicker
 
Zitat:

Zitat von Cheffu
Das ist bei mir eben leider nicht so.
Wenn ich es wie in dem folgenden Code mache (der in onChange des TDateTimePicker steht), dann gibt er immer nur das aktuelle Datum aus und nicht das ausgewählte.
Delphi-Quellcode:
DatumAusleser.Date:=Date; // DatumAusleser: TDateTimePicker;
Edit1.Text:=DateToStr(Date);
mfg
Cheffu

Ich will Deinen Fehler nochmal zusammenfassen.
Du weist Deiner Komponenten (DatumAusleser) das aktuelle Datum zu mit der Funktion Date.
Dann schreibst Du in Edit1 auch das aktuelle Datum mit Date.

Wenn Du es machst, wie Hobby-Programmierer in Beitrag #4 geschrieben hat, wird es schon besser aussehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz