AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TDateTimePicker: selektierten Bereich ermitteln/setzen
Thema durchsuchen
Ansicht
Themen-Optionen

TDateTimePicker: selektierten Bereich ermitteln/setzen

Ein Thema von Daniel L. · begonnen am 1. Jun 2019 · letzter Beitrag vom 1. Jun 2019
Antwort Antwort
Daniel L.

Registriert seit: 25. Sep 2008
17 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: TDateTimePicker: selektierten Bereich ermitteln/setzen

  Alt 1. Jun 2019, 18:42
Das Ändern von kind hab ich mal mit einem Timer getestet (um den Fokus auf den Picker nicht zu verlieren):
Die Date - und Time Werte bleiben erhalten, aber nach der Änderung wird immer der erste Bereich im Edit selektiert, man müsste dann eben den vorherigen Bereich per Code wieder erneut selektieren.

Also mit entsprechenden OnChange/Click/Keydown...Reaktionen sollte das zu machen sein -
wenn ich an die Selektierungen rankäme...

Ich gebe zu, daß TDateTimePicker dafür nicht wirklich konzipiert ist und es ein ziemliches Gefrickel wäre - aber mich nervt es immer wieder, dass man für die Aufnahme eines vollständigen TDateTime Wertes immer 2 Picker brauch, deren Werte man dann addiern muss.

Und eine brauchbare Fremdkomponente (am besten dann auch als datensenitive Variante) hab ich noch nicht gefunden.

Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#2

AW: TDateTimePicker: selektierten Bereich ermitteln/setzen

  Alt 1. Jun 2019, 19:00
Du könntest es vielleicht mit einer Interceptor Class erreichen, die das CN_NOTIFY abfängt:
Delphi-Quellcode:
type
  TDateTimePicker = class(Vcl.ComCtrls.TDateTimePicker)
  private
    procedure CNNotify(var Message: TWMNotifyDT); message CN_NOTIFY;
  end;

procedure TDateTimePicker.CNNotify(var Message: TWMNotifyDT);
var
  DT: TDateTime;
begin
  DT := DateTime;
  if (Message.NMHdr^.code = DTN_DATETIMECHANGE) and (Message.NMDateTimeChange^.dwFlags = GDT_VALID) then begin
    DT := SystemTimeToDateTime(Message.NMDateTimeChange^.st);
  end;
  inherited;
  DateTime := DT;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Daniel L.

Registriert seit: 25. Sep 2008
17 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: TDateTimePicker: selektierten Bereich ermitteln/setzen

  Alt 1. Jun 2019, 20:28
Ok, da ist einiges Neues für mich dabei, in das ich mich erst einarbeiten muß.

Wenn ich nicht weiterkomme, werd ich hier nochmal weiterposten.

Erstmal vielen Dank!

Daniel

Geändert von Daniel L. ( 1. Jun 2019 um 20:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#4

AW: TDateTimePicker: selektierten Bereich ermitteln/setzen

  Alt 1. Jun 2019, 22:24
Zum Thema Interceptor Class hier ein guter Artikel von Žarko Gajić: Delphi Interceptor (/Interposer) Classes -> TButton = class(TButton)

Sicher hilft auch ein Blick in die originale TDateTimePicker.CNNotify in Vcl.ComCtrls um zu verstehen, wie der Code funktioniert.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 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