Problem mit DateTimePicker

Alle Fragen rund Antworten rund um die ACMP Client Commands und Container
Antworten
volumeman_viersen
Beiträge: 3
Registriert: Mo Nov 18, 2019 4:29 pm

Hallo zusammen,

ich habe mir ein Formular erstellt, in dem ich einen TDateTimePicker verbaut habe... ich würde gerne jetzt das Datum in einer Variable gespeichert haben, da ich dieses Variable in eine E-Mail einbauen möchte.

Ich habe am DateTimePicker nicht groß geändert, außer den Name in datetimefeld.

Im Code habe ich dann folgendes verwendet:

Code: Alles auswählen

  SetVarContent('INPUT_NEUER_MA_STARTDATUM', datetimefeld.Date) 
Beim absetzen des Befehls wie im Code-Tag kommt folgendes heraus: 43787,3973733218

Laut ObjectInspector soll dieses Feld (Date) eigentlich den 18.11.2019 ausgeben... tuts aber nicht...

Lasse ich das .Date im SetVarContent weg kommt lediglich "871273456" heraus...

Code: Alles auswählen

  SetVarContent('INPUT_NEUER_MA_STARTDATUM', datetimefeld) 


Was muss ich tun, damit ich jetzt tatsächlich den 18.11.2019 angezeigt bekomme???

Vielen dank im voraus!
Benutzeravatar
ngottschalk
Beiträge: 293
Registriert: Mi Sep 08, 2010 12:57 pm

Hi Volumeman,

das hat alles seine Richtigkeit, intern wird hier der DateTime Typ verwendet, der auf Gleitkommazahlen basiert (http://docs.embarcadero.com/products/ra ... eTime.html). Um die Zahl in ein Datum umzuwandeln reicht es, ein Typecasting mittels "DateToStr" durchzuführen. Folgender Beispielcode hat problemlos funktioniert:

setvarcontent('EXAMPLE',DateTimePicker1.Date);
showmessage(DateToStr(getvarcontent('EXAMPLE')));

Das Format kann hierbei nach Belieben vorher angepasst werden.
Mit freundlichen Grüßen

Niklas Gottschalk (gottschalk@zoller-usa.com)
IT Systems Administrator
Zoller Inc.
FBiehn
Beiträge: 97
Registriert: Do Apr 22, 2010 10:38 am

Wieso wurde das Format so gewählt? Ganzzahl steht für Tage seit 30.12.1899 und Nachkommastellen für die Uhrzeit. Ganz einfach: Microsoft hat das so gewählt. Und wieso Microsoft das so gemacht hat, kann man schön hier nachlesen.
volumeman_viersen
Beiträge: 3
Registriert: Mo Nov 18, 2019 4:29 pm

Guten Morgen zusammen,

hat super funktioniert... danke für präzise Auskunft... :D

Noch ein weitere Frage im Zusammenhang mit DateTimePicker.
Beim Start das heutige Datum als "Startdatum" festlegen? Im Moment nimmt er das gestrige Datum...
In den Eigenschaften des DateTimePickers habe ich dazu nix gefunden (bzw. ich bin einfach nur unwissend)...
Kann oder muss ich es im Code einstellen oder wie und wo mache ich das?
FBiehn
Beiträge: 97
Registriert: Do Apr 22, 2010 10:38 am

DateTimePicker1.Date := Now(); oder wenn man gleich die Nachkommastellen wegen der Uhrzeit entfernt haben will, dann nimmt man Trunc(Now()); - Trunc wirft alle Nachkommastellen weg, sodass man tatsächlich nur noch den Datumsanteil hat.
volumeman_viersen
Beiträge: 3
Registriert: Mo Nov 18, 2019 4:29 pm

Code: Alles auswählen

datetimefeld.Date:= Trunc(Now()); 
Der läuft bei mir in einen Syntaxfehler... Beim wegklicken der Meldung (bin noch im Editor und haben einen Syntax-Check drüber laufen lassen) springt er mir dann in den MainUnit und markiert mir da die uses in rot?

Muss da noch etwas hinzugefügt werden?

EDIT:
nachdem ich es in einem OKButtonClick nach dem begin eingefügt hatte, war der Syntax ok. ABER nach dem Klick auf OK ist ja zu spät... er soll es direkt beim "Starten des Forms" laden. Wo muss ich das plazieren?

Gibts irgendwo noch Anleitungen die man sich mal als Bettlektüre ansehen kann?

EDIT2:
Habe es mit einem "On Create"-Event gelöst... jetzt funktioniert es wie gewünscht :D
Thx an alle
Antworten