Einzelnen Beitrag anzeigen

BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
480 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TDBEdit Datum abprüfen bei exit

  Alt 7. Dez 2022, 08:48
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.
Bernd
  Mit Zitat antworten Zitat