AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi TDBEdit Datum abprüfen bei exit
Thema durchsuchen
Ansicht
Themen-Optionen

TDBEdit Datum abprüfen bei exit

Ein Thema von stalkingwolf · begonnen am 6. Dez 2022 · letzter Beitrag vom 8. Dez 2022
Antwort Antwort
stalkingwolf

Registriert seit: 6. Mai 2011
549 Beiträge
 
#1

AW: TDBEdit Datum abprüfen bei exit

  Alt 7. Dez 2022, 07:58
Danke an alle Antworten.

In unserem Delphi 6 Programm hat dies funktioniert und ich habe nachgeschaut warum.
Wir haben damals die sysutils.pas um diverse Dinge erweitert. Darunter auch das strtodate automatisch das Datum aufbereitet.
Die sysutils haben wir dann aus den D6 Installationen gelöscht und in einen eigenen Suchpfad gelegt.
Scheinbar hat das TDBedit auf strtodate zugegriffen und es hat damit funktioniert.

Glaub das geht in Delphi 11 nicht, weil die Delphi Versionen nach D6 wohl das Datum?! von den anderen Units gegenprüfen und somit keine Modifikation zulassen.

Das ist bad, weil unsere Anwender das gewohnt sind nicht das gesamte Datum einzugeben. Werden wohl nicht drumherum kommen das wir für die Datumsfelder kein DBedit mehr nutzen. Machen wir in neueren Programmen eh nicht mehr, es gibt noch paar alte welche primär auf TDBEdit aufsetzen.

Edit : Ich habe dies einmal mit OnSetText probiert.
2 Probleme dabei.
1.) Die Felder müssen dem Datset hinzugefügt worden sein. Das machen wir nicht immer. Eigentlich auch nicht notwendig. Aber das kann man lösen.
2.) Problem. Ich kann danach nicht mehr Leer eingeben. sobald ich leer durchreiche mit sender.value := text; gibt es eine Fehlermeldung. sender.asdatetime := 0 habe ich 1899 drin

Geändert von stalkingwolf ( 7. Dez 2022 um 08:43 Uhr)
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
459 Beiträge
 
Delphi 12 Athens
 
#2

AW: TDBEdit Datum abprüfen bei exit

  Alt 7. Dez 2022, 08:44
Problem 2 löst du mit

Sender.Clear;
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
492 Beiträge
 
Delphi 12 Athens
 
#3

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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz