Bonjour,
Je m'arrache les cheveux sur ce composant pourtant bien pratique. Il est utilisé et fonctionne correctement pour l'affichage des dates courantes. Mais ses propriétés permettent normalement d'afficher les heures, minutes, secondes et même les millisecondes dont j'ai besoin dans mes calculs... j'utilise une autre méthode en attendant, mais ça m'agace de voir que les propriétés affichées ne semblent pas fonctionner.
voici l'affichage que j'ai à la conception sur ma fiche :
Et le code que je mets dans le creat ou dans un évènement bouton, ça ne change rien!
Normalement Now donne les millisecondes au moment de l'exécution, mais le composant ne semble pas l'interpréter correctement. Est-ce un Bug ou j'ai loupé quelque chose?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DateTimePicker1.Kind := dtkDateTime; DateTimePicker1.TimeDisplay := tdHMSMs; DateTimePicker1.TimeFormat := tf24; DateTimePicker1.DateTime := Now; Millisec := MilliSecondOf(Now); showmessage(Inttostr(millisec));
Par ailleurs, la date du 18 déc 1899 sort d'on ne sait où? La doc indique que la date minimale est de 1/10/1752!?!
En allant voir la définition de TDateTimePicker dans son unité DateTimePicker, je trouve les codes suivants:
On voit que ça dépend aussi des options, mais je les ai toutes essayées, le problème ne vient pas de là!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 procedure TCustomDateTimePicker.SetDateTime(const AValue: TDateTime); begin if not EqualDateTime(AValue, FDateTime) then begin if IsNullDate(AValue) then FDateTime := NullDate else FDateTime := AValue; UpdateDate(dtpoDoChangeOnSetDateTime in FOptions); end else UpdateDate; end; ... et plus loin: procedure TCustomDateTimePicker.SetTime(const AValue: TTime); begin if IsNullDate(AValue) then DateTime := NullDate else if DateIsNull then DateTime := ComposeDateTime(Max(Min(SysUtils.Date, MaxDate), MinDate), AValue) else DateTime := ComposeDateTime(FDateTime, AValue); end;
Du coup, je pense que c'est peut être un problème de directive d'exécution (ou peut-être de de compilation), car à la conception, il affiche les bonnes valeurs...
Quelqu'un sait-il faire?
Merci
Partager