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;
"... we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we don't know. But there are also unknown unknowns - the ones we don't know we don't know."