DateTimePicker.MinDate

Signaler
Messages postés
19
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
28 août 2005
-
Messages postés
19
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
28 août 2005
-
Bonjour,

J'ai 2 datetimepicker(sous delphi 7).

Dans l'évènement onchange j'ai du premier j'ai :
DateTimePicker2.MinDate:=DateTimePicker1.Date;

Sur le second datetimepicker je n'ai aucun code sur aucun
evenements.

je ne comprend pas pourquoi quand je change la date
du datetimepicker2 (en cliquant sur le composant) et que
je choisi la date correspondante à MinDate passer en paramêtre,
j'obtient une erreur " la date est inférieure au minimum xx/xx/xxxx".
Alors qu'elle est égale et non pas inférieure.

J'ai bien essayé de capturer cette exception sur les evenements du 2eme mais
impossible de la capturer. Pourtant l'aide delphi dit :
"Les dates hors de l'intervalle déclenchent une exception EDateTimeError."

Quelqu'un aurait il une explication à ce problème ?

Merci à l'âme charitable qui m'apportera une réponse.

6 réponses

Messages postés
102
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
24 mars 2021

Hello

Et dans ton appli , MaxDate n'est pas inferieure ? quelle est sa valeur
car si maxdate < mindate : erreur

Gil
Messages postés
19
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
28 août 2005

je n'utilise pas de valeur à MaxDate parceque je ne veux pas le limiter.

cafeine911
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
En réalité, l eproblème est simple et pour m'en (et vous) convaincre, je me suis livré à une vérification toute simple. Posez deux TLabel nommés lblTime1 et lblTime2 et créez deux gestionnaires dévènements comme suit pour DateTimePicker1 et DateTimePicker2 :

procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
  DateTimePicker2.MinDate :=  DateTimePicker1.Date;
  lblTime1.Caption := DateTimeToStr(DateTimePicker1.Date);
 end ;

procedure TForm1.DateTimePicker2Change(Sender: TObject);
begin
  lblTime2.Caption : = DateTimeToStr(DateTimePicker2.Date)
end;

Contrairement à toute attente, le fait d'affecter la valeur de la propriété Date de DateTimePicker1 à DateTimePicker2.MinDate, affectes aussi l'heure.
A moins d'être super rapide et de modifier DateTimePicker2 au plus dans les 59 secondes qui suivent la modification de DateTimePicker1, le composant renverra toujours une erreur !

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
19
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
28 août 2005

daccord, ça je le comprend.
mais pourquoi la capture de l'exception EDateTimeError annoncée par l'aide est impossible?
le try ne capture rien du tout.

En attendant je proposai dans mon application, deux datetimepicker comme borne de période et qu'il est illogique que mon 2ème datetimepicker puisse être inférieur au premier.

existe t'il une autre façon(composant) qui permettrais de proposer ce choix visuel aux utilisateurs(trices) de mon appli.
De plus si la personne choisi la même date dans les deux, je veux que la période soit bien de 1 jour entier.

Merci encore de votre aide.

Cafeine911
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
mais pourquoi la capture de l'exception EDateTimeError annoncée par l'aide est impossible? le try ne capture rien du tout.
C'est simple. C'est au niveau du code du composant que l'exeception est déclenchée. Toute exception qui ne serait pas traitée à ce niveau se retouverait au niveau de la fiche, puis si toujours pas traitée, au niveau de l'application.
C'est le principe même de la gestion des exceptions : quand on ne traite pas une exception à un niveau donné, elle se propage jusqu'au niveau supérieur le plus haut si nécessaire.

Peux-tu décrire la règle de gestion qui est imposée et qui a conduit à choisir des TDateTimePicker ?


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
19
Date d'inscription
mardi 10 octobre 2000
Statut
Membre
Dernière intervention
28 août 2005

La règle est :

Fiche situation quotidienne et historique(la visibilité doit être possible sur la même Fiche et immédiate).
Tous les mouvements quantité entrée, quantité sortie sont datés (pas d'heure juste des dates).
Ce qui s'impose c'est date de début et date de fin, donc fatalement une date de fin qui ne peut être qu'égale ou que supérieure.

Période par défaut, le jour "j", soit :
Début de période "j"=fin de période "j".
Requete sql affiche stock encours(stock ini "j-1" + entré de "j" - sortie "j"= situation temps réel).

Période historique choisie (controle), soit :
Date de début à selectionner, date de fin à selectionner(pas nécessairement le jour "j", situation antérieur visible, chaque mouvement est daté).Puisqu'il s'agit de situation de stock, la date de fin est soit égale (pour une situation jour par jour), soit supérieure pour une fourchette de date.
Requete sql affiche stock encours(stock ini "j-1") + entrée de "j"(ou entrée de "j+n") - sortie "j"(ou sortie de "j+n")=stock final fin de la période.

Il m'a semblé que le datetimepicker était plutot convivial pour un utilisateur qui doit choisir une période ou se contenter de la situation quotidienne, rapidement sans saisir.