![]() |
aktuelles Datum in TDateTimePicker
Hallo,
ich habe eine eigene Komponente von TDateTimePicker "abgelitten". Diese soll nun automatisch beim DropDown zum aktuellen Datum springen, falls zuvor noch der 30.12.1899 (Beginn der Zeitrechnung in Delphi) eingestellt war. Falls der User kein Datum auswählt soll das Datum wieder auf den 30.12.1899 zurückgestellt werden. Hintergrund: Der Datetimepicker soll für Datenbank-Felder genutzt werden. Dort steht im neuen Datensatz immer NULL was von Delphi als 30.12.1899 interpretiert wird. Wenn der Nutzer keinen Termin angibt, soll das Feld auch leer bleiben. Vielleicht hat ja jemand 'ne Idee. mr2 anbei die aktuellen Quellen (das Setzen des Datums kommt zu spät, so dass zwar im Editfeld der aktuelle Tag steht, aber der angezeigte Kalender zeigt immer noch den Dezember 1899).
Delphi-Quellcode:
uses
Classes, ComCtrls, Controls, Messages, CommCtrl, Windows, SysUtils; type TDateTimePickerEx = class(TDateTimePicker) private FNowSet: Boolean; protected procedure WndProc(var Message: TMessage); override; function MsgSetDateTime(Value: TSystemTime): Boolean; override; procedure CheckEmptyDate; override; procedure DoCloseUp; virtual; procedure DoDropDown; virtual; end; procedure Register; implementation procedure Register; begin RegisterComponents('Win32', [TDateTimePickerEx]); end; { TDateTimePickerEx } procedure TDateTimePickerEx.WndProc(var Message: TMessage); begin if (Message.Msg = CN_NOTIFY) then with TWMNotify(Message), NMHdr^ do begin case code of DTN_CLOSEUP: DoCloseUp; DTN_DROPDOWN: DoDropDown; end; end; inherited; end; procedure TDateTimePickerEx.DoCloseUp; begin // if FNowSet // then DateTime := 0; end; procedure TDateTimePickerEx.DoDropDown; begin if (DateTime = 0) then begin DateTime := Now; FNowSet := True; end; end; function TDateTimePickerEx.MsgSetDateTime(Value: TSystemTime): Boolean; begin Result := inherited MsgSetDateTime(Value); end; procedure TDateTimePickerEx.CheckEmptyDate; begin // inherited; end; |
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Windows API" nach "VCL-Komponenten und Controls" verschoben.
TDateTimePicker und Derivate sind VCL Komponenten |
Re: aktuelles Datum in TDateTimePicker
niemand eine Idee?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22: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