DateEdit zeigt plötzlich Datum an wenn Wert = 0 (31.12.1899)

Rund um die LCL und andere Komponenten
Antworten
AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

DateEdit zeigt plötzlich Datum an wenn Wert = 0 (31.12.1899)

Beitrag von AlterMann »

Guten Morgen

Ich habe (nach Längerem) wieder einmal die IDE auf neuesten Stand gebracht (Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64)

Seither sind alle DateEdit die zuvor einfach leer waren, mit obigem Datum gefüllt.
Ich behelfe mir jetzt halt mit

Code: Alles auswählen

 if DateEdit6.Date = 0 then DateEdit6.Clear;
aber das sind sehr viele Stellen im Code.
Gibt es da eine (neue) Einstellung bei TDateEdit, die diese Anzeige wieder unterdrückt?

angenehmen Tag
Chris
Früher war alles besser. Und aus Holz!

Benutzeravatar
six1
Beiträge: 788
Registriert: Do 1. Jul 2010, 19:01

Re: DateEdit zeigt plötzlich Datum an wenn Wert = 0 (31.12.1899)

Beitrag von six1 »

Hallo,
ich habe das mal kurz nachzuvollziehen versucht.
Meine IDE ist 2.3.0 mit fpc 3.2.2

Wenn ich dem TEdit in Date eine 0 auf Date zuweise über einen Button, passiert garnichts.
Zuweisung einer 1 erzeugt 31.12.1899.

Du könntest all deinen TEdit im onChange folgendes zuweisen:

Code: Alles auswählen

procedure TForm1.DateEdit1Change(Sender: TObject);
begin
  if (Sender as TDAteEdit).Date <= 1 then (Sender as TDateEdit).clear;
end;
Einmal das Event erzeugen und dann allen anderen die gleiche Prozedure als Ereignisbehandlung zuweisen im onChange.
Gruß, Michael

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: DateEdit zeigt plötzlich Datum an wenn Wert = 0 (31.12.1899)

Beitrag von AlterMann »

six1 hat geschrieben:
Mi 7. Feb 2024, 08:16


Einmal das Event erzeugen und dann allen anderen die gleiche Prozedure als Ereignisbehandlung zuweisen im onChange.
Ja. So etwas in der Art werde ich wohl machen.
Ich hatte gehofft es wäre nur eine neue Option, die ich nur übersehen habe.

Danke
Chris
Früher war alles besser. Und aus Holz!

wp_xyz
Beiträge: 4895
Registriert: Fr 8. Apr 2011, 09:01

Re: DateEdit zeigt plötzlich Datum an wenn Wert = 0 (31.12.1899)

Beitrag von wp_xyz »

Du darfst DateEdit1.Date nicht auf den Wert 0 setzen, sondern auf NullDate:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
begin
  DateEdit1.Date := NullDate;
end;
Der Wert von NullDate wurde vor 1 1/2 Jahren von 0 auf eine Zahl außerhalb des im Kalender eingebbaren Zahlenbereichs geändert, weil man vorher das Datum 30.12.1899 nicht eingeben konnte (https://gitlab.com/freepascal.org/lazar ... c216608852)

NullDate ist eine beschreibbare "Konstante", du kannst sie also wieder auf 0 zurücksetzen, damit hättest du das alte Verhalten zurück. kannst allerdings nicht mehr das Datum 30.12.1899 eingeben - aber das ist in der Regel nicht sooooo wichtig.

AlterMann
Beiträge: 233
Registriert: So 13. Dez 2009, 09:43
OS, Lazarus, FPC: Lazarus 3.0 (rev lazarus_3_0) FPC 3.2.2 i386-win32-win32/win64
CPU-Target: x86 64Bit
Wohnort: Niederösterreich

Re: DateEdit zeigt plötzlich Datum an wenn Wert = 0 (31.12.1899)

Beitrag von AlterMann »

wp_xyz hat geschrieben:
Mi 7. Feb 2024, 10:06

NullDate ist eine beschreibbare "Konstante", du kannst sie also wieder auf 0 zurücksetzen, damit hättest du das alte Verhalten zurück. kannst allerdings nicht mehr das Datum 30.12.1899 eingeben - aber das ist in der Regel nicht sooooo wichtig.
(Für mich) der Königsweg!
Geändert und funktioniert. Danke!
Früher war alles besser. Und aus Holz!

Antworten