![]() |
TDateTimePicker -> OnChange abbrechen
Hallo zusammen,
ich prüfe im onChange-Ereignis eines TDateTimePickers ab ob das Datum korrekt ist. Wenn dies nicht der Fall ist, möchte ich die Eingabe des Users mit einem anderem Datum überschreiben. Dies klappt aber leider nicht. Wie kann ich denn die Eingabe des Users abbrechen ? Gruss Holger |
Re: TDateTimePicker -> OnChange abbrechen
Wie versucst du die Eingabe zu überschreiben?
|
Re: TDateTimePicker -> OnChange abbrechen
hoi,
überschreib im Onchange einfach DateTimePicker1.Date mit deinem Wert bei einem Fehler. cya |
Re: TDateTimePicker -> OnChange abbrechen
Das habe ich ja gemacht, aber der Wert den ich im Programm setze wird nicht übernommen, sondern die Einagbe des Users.
Verstehe das auch nicht. |
Re: TDateTimePicker -> OnChange abbrechen
Zeig mal den Code
|
Re: TDateTimePicker -> OnChange abbrechen
Hier der Code:
Delphi-Quellcode:
procedure TForm1.DTP_Datum_FreigabeChange(Sender: TObject);
begin If DTP_Datum_Freigabe.Date < DTP_Datum_1.Date then DTP_Datum_Freigabe.Date := DTP_Datum_1.Date; end; |
Re: TDateTimePicker -> OnChange abbrechen
Versuch es mal mit Trunc( <Date>), denn wegen eines Fehlers ist diese Eigenschaft ein TDateTime und kein TDate
|
Re: TDateTimePicker -> OnChange abbrechen
Alternative:
Setze MinDate
Delphi-Quellcode:
DTP_Datum_Freigabe.MinDate:= DTP_Datum_1.Date
|
Re: TDateTimePicker -> OnChange abbrechen
Mit MinDate arbeite ich nicht so gerne.
So klappt es aber auch nicht:
Delphi-Quellcode:
Weitere Ideen ?
procedure TForm1.DTP_Datum_FreigabeChange(Sender: TObject);
begin If DTP_Datum_Freigabe.Date < DTP_Datum_1.Date then DTP_Datum_Freigabe.Date := Trunc(DTP_Datum_1.Date); end; |
Re: TDateTimePicker -> OnChange abbrechen
Ich meinte eigentlich beim Vergleich, sollte aber nichts am Problem ändern.
was hast du gegen Mindate? |
Re: TDateTimePicker -> OnChange abbrechen
Werde ich wohl nun benutzen müssen.
Da ich drei Datumsfelder gegeneinander sichern muss, muss ich dann ständig Min und Max anpassen. Arbeite da lieber mit if then. Was ich nicht verstehe ist, dass wenn ich im onChange bei DatumFreigabe das Datum1 ändere oder umgekehrt klappt das. Nur wenn ich im onChange bei DatumFreigabe das DatumFreigabe selber ändern will klappt es nicht. Daher meine Frage am Anfang ob ich die Eingabe des users eventuell abbrechen kann oder muss ? |
Re: TDateTimePicker -> OnChange abbrechen
hoi,
was passiert wenn du zum testen datum_freigabe einen statischen Wert zuweisen willst.
Delphi-Quellcode:
wenn das funzt liegt es doch eigentlich an der abfrage - nicht ?
procedure TForm1.DTP_Datum_FreigabeChange(Sender: TObject);
begin DTP_Datum_Freigabe.Date := StrToDate('01.01.2000'); //If DTP_Datum_Freigabe.Date < DTP_Datum_1.Date then DTP_Datum_Freigabe.Date := Trunc(DTP_Datum_1.Date); end; cya |
Re: TDateTimePicker -> OnChange abbrechen
Alternative 2
versuche es mit dem Ereignis Userinput (parseInput = true)
Delphi-Quellcode:
procedure TForm1.DateTimePicker1UserInput(Sender: TObject;
const UserString: String; var DateAndTime: TDateTime; var AllowChange: Boolean); begin if DateAndTime < Date -1 then AllowChange:= False; end; |
Re: TDateTimePicker -> OnChange abbrechen
Zitat:
|
Re: TDateTimePicker -> OnChange abbrechen
Zitat:
|
Re: TDateTimePicker -> OnChange abbrechen
Hmm... es scheint so, dass nur das Dropdown Probleme macht... wenn du das Datum über die Eingabe änderst klappt das Überschreiben im OnChange, wenn du das Datum über das Dropdown änderst dann nicht. Außerdem interessant: über die Eingabe wird OnChange 1 mal aufgerufen, über das Dropdown jedoch 2 mal... :gruebel:
|
Re: TDateTimePicker -> OnChange abbrechen
Also keine Chance ?
Geht also nur mit MinDate und MaxDate ? Das mit dem 2-mal aufrufen ist mir auch schon aufgefallen ??? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 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