Die technisch beste Lösung wäre, nicht am Control TDBEdit anzusetzen, sondern am Feld.
Dazu wird ein Eventhandler für
OnSetText bereitgestellt:
Delphi-Quellcode:
procedure TForm1.DateFieldOnSetText(Sender: TField; const Text: String);
begin
if Text = 'h' then
Sender.AsDateTime := DateToStr( Date())
else if Text = 'm' then
Sender.AsDateTime := DateToStr( Date()+1.0)
else if Text = 'g' then
Sender.AsDateTime := DateToStr( Date()-1.0)
else
Sender.AsString := Text;
end;
Vorteil: das funktioniert jetzt nicht nur mit einem DBEdit sondern auch mit TDBGrid.
Ausserdem ist es möglich alle Date-Felder über eine Schleife abzugrasen und den Eventhandler zuzuweisen.