unit DBDateEdit; interface uses Classes, SysUtils, LCLType, LMessages, DB, DBCtrls, editbtn; type { TDBDateEdit } TDBDateEdit = class(TDateEdit) private FDataLink: TFieldDataLink; procedure DataChange(Sender: TObject); procedure UpdateData(Sender: TObject); procedure FocusRequest(Sender: TObject); procedure ActiveChange(Sender: TObject); procedure LayoutChange(Sender: TObject); function GetDataField: string; function GetDataSource: TDataSource; procedure SetDataField(const Value: string); procedure SetDataSource(Value: TDataSource); procedure CMGetDataLink(var Message: TLMessage); message CM_GETDATALINK; function GetField: TField; protected function GetReadOnly: Boolean; override; procedure SetReadOnly(Value: Boolean); override; procedure KeyDown(var Key: Word; Shift: TShiftState); override; procedure DoButtonClick(Sender: TObject); override; procedure Loaded; override; procedure Notification(AComponent: TComponent; Operation: TOperation); override; procedure Change; override; procedure Reset; override; procedure WMSetFocus(var Message: TLMSetFocus); message LM_SETFOCUS; procedure WMKillFocus(var Message: TLMKillFocus); message LM_KILLFOCUS; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property Field: TField read GetField; published property DataField: string read GetDataField write SetDataField; property DataSource: TDataSource read GetDataSource write SetDataSource; property ReadOnly: Boolean read GetReadOnly write SetReadOnly default False; end; implementation {$Include dbdateedit.inc} end.