DateTimePicker.MinDate

Cafeine911 Messages postés 19 Date d'inscription mardi 10 octobre 2000 Statut Membre Dernière intervention 28 août 2005 - 26 août 2005 à 11:53
Cafeine911 Messages postés 19 Date d'inscription mardi 10 octobre 2000 Statut Membre Dernière intervention 28 août 2005 - 28 août 2005 à 21:54
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

Gildeplomb Messages postés 101 Date d'inscription samedi 29 décembre 2012 Statut Membre Dernière intervention 1 novembre 2023
26 août 2005 à 14:32
Hello

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

Gil
0
Cafeine911 Messages postés 19 Date d'inscription mardi 10 octobre 2000 Statut Membre Dernière intervention 28 août 2005
26 août 2005 à 15:04
je n'utilise pas de valeur à MaxDate parceque je ne veux pas le limiter.

cafeine911
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
26 août 2005 à 23:45
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.
0
Cafeine911 Messages postés 19 Date d'inscription mardi 10 octobre 2000 Statut Membre Dernière intervention 28 août 2005
27 août 2005 à 16:34
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
27 août 2005 à 23:20
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.
0
Cafeine911 Messages postés 19 Date d'inscription mardi 10 octobre 2000 Statut Membre Dernière intervention 28 août 2005
28 août 2005 à 21:54
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.
0
Rejoignez-nous