Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TDateTimePicker -> OnChange abbrechen (https://www.delphipraxis.net/151617-tdatetimepicker-onchange-abbrechen.html)

HolgerCW 25. Mai 2010 13:25


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

mkinzler 25. Mai 2010 13:41

Re: TDateTimePicker -> OnChange abbrechen
 
Wie versucst du die Eingabe zu überschreiben?

soulies 25. Mai 2010 13:42

Re: TDateTimePicker -> OnChange abbrechen
 
hoi,

überschreib im Onchange einfach DateTimePicker1.Date mit deinem Wert
bei einem Fehler.

cya

HolgerCW 25. Mai 2010 13:49

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.

mkinzler 25. Mai 2010 13:51

Re: TDateTimePicker -> OnChange abbrechen
 
Zeig mal den Code

HolgerCW 25. Mai 2010 14:19

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;

mkinzler 25. Mai 2010 14:22

Re: TDateTimePicker -> OnChange abbrechen
 
Versuch es mal mit Trunc( <Date>), denn wegen eines Fehlers ist diese Eigenschaft ein TDateTime und kein TDate

fatalerror 25. Mai 2010 14:24

Re: TDateTimePicker -> OnChange abbrechen
 
Alternative:
Setze MinDate
Delphi-Quellcode:
DTP_Datum_Freigabe.MinDate:= DTP_Datum_1.Date

HolgerCW 25. Mai 2010 14:28

Re: TDateTimePicker -> OnChange abbrechen
 
Mit MinDate arbeite ich nicht so gerne.

So klappt es aber auch nicht:

Delphi-Quellcode:
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;
Weitere Ideen ?

mkinzler 25. Mai 2010 14:29

Re: TDateTimePicker -> OnChange abbrechen
 
Ich meinte eigentlich beim Vergleich, sollte aber nichts am Problem ändern.
was hast du gegen Mindate?

HolgerCW 25. Mai 2010 14:34

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 ?

soulies 25. Mai 2010 14:45

Re: TDateTimePicker -> OnChange abbrechen
 
hoi,

was passiert wenn du zum testen datum_freigabe einen statischen Wert zuweisen willst.

Delphi-Quellcode:
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;
wenn das funzt liegt es doch eigentlich an der abfrage - nicht ?

cya

fatalerror 25. Mai 2010 14:47

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;

dominikkv 25. Mai 2010 14:50

Re: TDateTimePicker -> OnChange abbrechen
 
Zitat:

Zitat von fatalerror
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;

laut Hilfe geht das aber nur, wenn der Benutzer das Datum EINGIBT, aber nicht über das Dropdown AUSWÄHLT.

fatalerror 25. Mai 2010 14:53

Re: TDateTimePicker -> OnChange abbrechen
 
Zitat:

Zitat von dominikkv
laut Hilfe geht das aber nur, wenn der Benutzer das Datum EINGIBT, aber nicht über das Dropdown AUSWÄHLT.

stimmt. Sorry

dominikkv 25. Mai 2010 15:12

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:

HolgerCW 25. Mai 2010 15:21

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