Du könntest auch die
Vcl.DBCtrls anpassen und den Pfad der geänderte Version im Suchpfad vor die Standardunits setzen oder in den Forms die TDBEdit anpassen.
Ich habe hier mal ein einfaches Beispiel, wie das geht, wobei ich hier TDBText direkt im Form abgeleitet habe, um keine neue Komponente erstellen zu müssen.
Noch besser wäre es, TDBEdit abzuleiten und als neuen Komponente diese in deinem Forms/Datenmodulen auszutauchen.
In meinem Beispiel wird bei einem ungültigen Datum der 1.1.2023 eingetragen. Da müsste dann deine Logik zum prüfen und anpassen des Textes rein.
Delphi-Quellcode:
unit Unit1;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls,
Vcl.Mask,
Vcl.DBCtrls,
Vcl.ExtCtrls, Data.DB, kbmMemTable;
type
TDBEdit =
class(
Vcl.DBCtrls.TDBEdit)
public
procedure ValidateEdit;
override;
end;
TForm1 =
class(TForm)
mt1: TkbmMemTable;
mt1DATE: TDateField;
mt1Name: TStringField;
ds1: TDataSource;
db1: TDBNavigator;
dbe1: TDBEdit;
dbeDATE: TDBEdit;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TDBEdit }
procedure TDBEdit.ValidateEdit;
var
S:
string;
D: TDateTime;
SA: TArray<
string>;
begin
inherited;
if Field
is TDateField
then
begin
S := Text;
if not TryStrToDate(S, D)
then
begin
Text := '
01.01.2023';
end;
end;
end;
end.