AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi DateTimePicker: Problem mit MinDate und MaxDate
Thema durchsuchen
Ansicht
Themen-Optionen

DateTimePicker: Problem mit MinDate und MaxDate

Ein Thema von Mike_on_Tour · begonnen am 26. Okt 2009 · letzter Beitrag vom 28. Okt 2009
Antwort Antwort
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

DateTimePicker: Problem mit MinDate und MaxDate

  Alt 26. Okt 2009, 15:44
Hallo,

ich programmiere mit Delphi 2005 Pro und habe ein Problem mit dem DateTimePicker und dem Setzen des Datums und der Min-/Max-Werte zur Laufzeit. Das Auswahldatum darf nur zwischen einem Erfassungsdatum und dem aktuellen Tagesdatum liegen. Der Code sah bisher so aus:
Delphi-Quellcode:
// aktuelles Datum setzen
DateTimePicker1.Date := Date();
// Min/Max-Datum setzen
DateTimePicker1.MinDate := Trunc (adsTblAuftrag.FieldByName('ErfassDatum').AsDateTime);
DateTimePicker1.MaxDate := Date();
Unter Windows XP funktioniert das auch. Unter Windows Vista erhalte ich aber ab dem zweiten Aufruf die Meldung "Kalenderzeit und -datum konnte nicht gesetzt werden". Das Problem sind offensichtlich die Zuweisungen der Min-/Max-Werte. Ich habe den Code auch schon so abgeändert:
Delphi-Quellcode:
// Min/Max-Datum rücksetzen
DateTimePicker1.MinDate := 0;
DateTimePicker1.MaxDate := 0;
// aktuelles Datum setzen
DateTimePicker1.Date := Date();
// Min/Max-Datum neu setzen
DateTimePicker1.MinDate := Trunc (adsTblAuftrag.FieldByName('ErfassDatum').AsDateTime);
DateTimePicker1.MaxDate := Date();
Die Fehlermeldung unter Windows Vista kommt aber weiterhin, während es mit Windwos XP weiter funktioniert.

Wie läßt sich das Problem lösen ?

Mike
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
fatalerror
(Gast)

n/a Beiträge
 
#2

Re: DateTimePicker: Problem mit MinDate und MaxDate

  Alt 26. Okt 2009, 16:43
Delphi-Quellcode:
DateTimePicker1.Date:= Date;
DateTimePicker1.MinDate:=Trunc(date)-10;
DateTimePicker1.MaxDate:= Trunc(date);
obenstehender Code funktioniert bei mir in Vista problemlos

also vermutlich bei dir:

Delphi-Quellcode:
// aktuelles Datum setzen
DateTimePicker1.Date := Date();
// Min/Max-Datum setzen
DateTimePicker1.MinDate := Trunc (adsTblAuftrag.FieldByName('ErfassDatum').AsDateTime);
DateTimePicker1.MaxDate := trunc(Date);
sorry, hab überlesen, dass es erst beim zweiten mal auftritt.

Delphi-Quellcode:
DateTimepicker1.minDate:= 0;
DateTimepicker1.maxdate:= Date +100;
//sicherstellen das Datum grösser ist als einzufügendes Datum und bestehendes Datum

//jetzt neues Datum setzen
DateTimePicker1.Date:= Date +10;

DateTimePicker1.MinDate:=Trunc(date);
DateTimePicker1.MaxDate:= Trunc(date)+10;
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: DateTimePicker: Problem mit MinDate und MaxDate

  Alt 26. Okt 2009, 17:14
OK, ich muß etwas mehr erklären.

Ich habe ein Form1, in dem ein einzelner Datensatz von vielen ausgewählt wird. Mit einem Doppelklick auf diesen Datensatz wird ein Form2 aufgerufen, um die einzelnen Datenfelder des Datensatzes anzuzeigen:
Delphi-Quellcode:
procedure TForm1.StrGridDblClick(Sender: TObject);
begin
  Form2.ShowModal;
end;
Im Form2 befinden sich im Ereignis 'FormShow' u.a. folgende Codezeilen:
Delphi-Quellcode:
// aktuelles Datum setzen
DateTimePicker1.Date := Date();
// Min/Max-Datum setzen
DateTimePicker1.MinDate := Trunc (adsTblAuftrag.FieldByName('ErfassDatum').AsDateTime);
DateTimePicker1.MaxDate := Date();
bzw. die Änderungen aus meinem 1. Post. Der erste Aufruf von Form2 funktioniert auch unter Vista fehlerfrei. Ab dem zweiten Aufruf kommt jedoch die von mir beschriebene Fehlermeldung, aber nur unter Vista. Was kann ich tun ?

@fatalerror: Meine Antwort hat sich zeitlich etwas überschnitten. Ich habe schon folgends probiert:DateTimePicker1.MaxDate := Date() + 1; Das hat aber auch nichts geholfen.
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: DateTimePicker: Problem mit MinDate und MaxDate

  Alt 26. Okt 2009, 17:34
Es gibt eine neue Erkenntnis: Wenn man im ersten Aufruf von Form2 ein Datum aus dem DateTimePicker auswählt, funktionieren auch alle weiteren Aufrufe von Form2. Wird im ersten Aufruf von Form2 das Datum nicht geändert, kommt ab dem zweiten Aufruf die Fehlermeldung.
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
fatalerror
(Gast)

n/a Beiträge
 
#5

Re: DateTimePicker: Problem mit MinDate und MaxDate

  Alt 26. Okt 2009, 21:12
Ich kann dein Problem nicht nachvollziehen.

Stelle sicher, dass vor der Zuweisung des neuen Datums

1. Mindate zurückgesetzt wird auf 0
2. Maxdate sowohl grösser als das (zuvor) gesetzte Datum im Datetimepicker ist, als auch grösser als das neu zu setzende Datum.

Folgender rudimentärer Code funktioniert bei mir:

Delphi-Quellcode:
form2.dtp1.mindate:=0;
form2.dtp1.maxdate:= Trunc(date+360);
form2.dtp1.Date:= date;
form2.dtp1.mindate:= Trunc(date-10);
form2.dtp1.maxdate:= Trunc(date);

form2.ShowModal;
siehe auch:
Datetimepicker Probleme
  Mit Zitat antworten Zitat
Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: DateTimePicker: Problem mit MinDate und MaxDate

  Alt 27. Okt 2009, 09:36
Erst mal Danke für Deine Mithilfe. Ich habe das schon so eingetragen, aber es kommt trotzdem die Fehlermeldung. Etwas komisch finde ich, daß ich nach einer Änderung des Datums im ersten Aufruf auch alle anderen Aufrufe machen kann, aber ohne Änderung ab dem zweiten Aufruf eine Meldung bekomme.

Sinn und Zweck ist ja die Einschränkung der Datumsauswahl auf einen Bereich vom Tag der Erfassung bis zum aktuellen Tag. Wenn ich das so nicht zum Laufen bekomme, muß ich daß Datum eben beim Speichern in der Datenbank oder bei einem anderen Ereignis prüfen. Wie gesagt, unter Windows XP funktioniert es (Programmierer-PC), Windows Vista macht Probleme. Ich werde mal noch ein paar Tests machen, vielleicht ergibt sich doch noch was.
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: DateTimePicker: Problem mit MinDate und MaxDate

  Alt 27. Okt 2009, 11:00
Der DateTimePicker hatte schon immer irgendwelche Macken (ist ja ein Control von Windows). Ich weis nicht mehr genau welche, aber es hing mit Min und Max zusammen. Ich mache es so, dass ich generel auf Min und Max verzichte und den User im Nachhinein über eine falsche Zeitangabe informiere. I.A. ist dem User seine unmögliche Zeitangabe ja auch bewusst, soll heißen nur ein DAU gibt falsche Zeiten an, und dem reicht eine nachträgliche Meldung auch aus.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
fatalerror
(Gast)

n/a Beiträge
 
#8

Re: DateTimePicker: Problem mit MinDate und MaxDate

  Alt 28. Okt 2009, 11:30
Ein Workaround könnte allenfalls sein, die Form nicht automatisch zu erstellen, sondern erst beim entsprechenden Aufruf

Delphi-Quellcode:
var
   form2:TForm2
   
begin
   form2:= TForm2.create(self);
   Try
     form2.DateTimePicker1.Date := Date();
          form2.DateTimePicker1.MinDate := Trunc(adsTblAuftrag.FieldByName('ErfassDatum').AsDateTime);
     form2.DateTimePicker1.MaxDate := trunc(Date);
     form2.showmodal;
     // tu irgendwas

   
   finally
      form2.free;
   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 13:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz