Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TDateTimePicker - TDate und oder TTime? - bitte um Arbeitstipps (https://www.delphipraxis.net/203515-tdatetimepicker-tdate-und-oder-ttime-bitte-um-arbeitstipps.html)

NicoleWagner 25. Feb 2020 16:33

TDateTimePicker - TDate und oder TTime? - bitte um Arbeitstipps
 
Ich habe 2 TDateTimePicker. Gerade fand ich heraus, dass die Dinger nur ENTWEDER die Zeit ODER das Datum anzeigen können.
Lästig, doch was soll's. Ich habe eben zwei, eines fürs Datum, das andere für die Zeit.

War mir nicht klar ist: Wie funktionieren die intern?
Ich habe fast den Eindruck, dass sie zwar nur eines anzeigen können, doch intern wohl Datum UND Uhrzeit speichern?
Sie haben auch ein TDateTimePicker.DateTime neben .Date und .Time.

Was sie tun sollen: Sie stehen bereit, auf dass sie entweder "now" enthalten oder der User eigene Werte eingeben kann.
Auf ein ButtonClick Event rechnen sie dann diverse Perioden in die Zukunft.

Kann mir jemand einen Rat geben, wie ich mit den beiden TDateTimePicker sauber und effizient arbeite?
Wie gehe ich etwa damit um, wenn jemand EINES der Picker-Felder ändert? Muss ich die jeweils sofort synchronisieren? OnChange?
Oder addiere ich nur einfah .Date und .Time? Wird das nicht für die Anzeige gesetzte automatisch zero?
Danke!

Der schöne Günther 25. Feb 2020 16:47

AW: TDateTimePicker - TDate und oder TTime? - bitte um Arbeitstipps
 
Entweder verstehe ich das Problem nicht ganz oder du machst es zu kompliziert.
  • Einen Picker fürs Datum, einen für die Zeit
  • Gib beiden den gleichen
    Delphi-Quellcode:
    OnChange
    -Handler (hier "handlePickerChange")
  • Speichere dir das vom Benutzer ausgewählte TDateTime in einer eigenen Variable:

Delphi-Quellcode:
type
   TForm1 = class(TForm)
      datePicker: TDateTimePicker;
      timePicker: TDateTimePicker;
      procedure handlePickerChange(Sender: TObject);
      private var
         selectedDateTime: TDateTime;
   end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.handlePickerChange(Sender: TObject);
begin
   if(Sender = datePicker) then
      ReplaceDate(selectedDateTime, datePicker.Date)
   else if(Sender = timePicker) then
      ReplaceTime(selectedDateTime, timePicker.Time);

   Caption := DateTimeToStr(selectedDateTime);
end;

himitsu 25. Feb 2020 16:50

AW: TDateTimePicker - TDate und oder TTime? - bitte um Arbeitstipps
 
Bei den Property .Date und .Time einiger Komponenten mußt du aufpassen, da dort intern vergessen wurde das zu trennen und dann in Wirklichkeit TDateTime dort rein/raus geht.

Bei den DB-Komponenten hast du Glück, da sie sich über das gemeinsame TField gegenseitig synchronisieren, wenn Einer nen Teil ändert, dann läd der Andere den neuen Wert und nix geht verloren.


Falls aus .Date bzw. .Time doch alles raus kommt, dann kannst beide Werte nicht einfach zusammenrechnen und musst selbst nochmal die Trennung vornehmen.
Delphi-Referenz durchsuchenDateOf und Delphi-Referenz durchsuchenTimeOf

Delphi-Quellcode:
DateEdit.Date := Eingabe; // :=DateOf(Eingabe) wird nicht nötig sein
TimeEdit.Time := Eingabe; // :=TimeOf(Eingabe) wird nicht nötig sein

... bearbeiten, onchange oder sonstwie

Ausgabe := DateOf(DateEdit.Date) + TimeOf(TimeEdit.Time);
Ebenso wenn es nur einen Value-Property gibt, wo die Daten nicht eindeutig getrennt sind, dann sowieso das DateOf/TimeOf drumrum.

@Der schöne Günther: Wenn ich mich recht erinnere, dann speichert die Komponente intern das komplette Datum, inkl. Zeit.
Beim Auslesen kann man .Date und .Time verwenden, aber da war "früher" die Trennung vergessen wurden und diese Property gaben immer das komplette DateTime raus. (k.A. ob das inzwischen repariert wurde)

NicoleWagner 25. Feb 2020 17:19

AW: TDateTimePicker - TDate und oder TTime? - bitte um Arbeitstipps
 
Danke für die Antworten! Insb. Günter, der eine ganze Methode stiftete.
So werde ich es machen!

Cheryll


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr.

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