IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

DateTimePicker et format particulier des heures


Sujet :

C++Builder

  1. #1
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut DateTimePicker et format particulier des heures
    Bonsoir,

    J'ai viens de tomber sur un os...Dans un TDateTimePicker, avec la propriété Kind a dtkTime, j'ai besoin de 'bloquer' le changement des valeurs pour les minutes afin qu'il ne soit possible de se déplacer que de quart d'heure en quart d'heure...
    Je ne sais pas vraimment comment m'y prendre.
    J'ai bien peur de devoir passer par un composant 'fait main', dérivé de TDateTimePicker ou d'un ancêtre du même genre.Cela ne s'enchante guère a priori surtout parceque je n'ai - la non plus - pas trop d'idée pour savoir par ou commencer.
    Avez vous des idées a ce sujet ?

    Sinon, ya peut être des composants de ce genre sur le net...?

    Merci
    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Je pense qu'en dérivant de TDateTimePicker tu risques d'hériter du problème. Je serais tenté de conseiller de développer un objet fonctionnant selon ton principe.
    Sous la forme d'un composant à demeure ou ponctuel ?

    A plus !

  3. #3
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour,

    Effectivement, j'etais en train d'essayer cette histoire de dérivé d'un TDateTimePicker (ou d'un TCommonCalendar ?) mais c'est pas gagné...
    Sinon, a priori j'aurai plutôt vu un composant a demeure.

    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Cantrelle a ecrit:
    Bonjour,

    Effectivement, j'etais en train d'essayer cette histoire de dérivé d'un TDateTimePicker (ou d'un TCommonCalendar ?) mais c'est pas gagné...
    Sinon, a priori j'aurai plutôt vu un composant a demeure.
    apparament c'est une combobox qui affiche soit la date soit l'heure.
    est ce que tu ne peut pas utiliser une combobox et un timer qui affiche tous le 15 minutes comme tu le souhaite
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  5. #5
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Salut,
    Non, en fait il ne s'agit pas d'un problème d'affichage réglé dans le temps mais le fait de ne laisser la possibilté a l'utilisateur que de passer de quart d'heures en quart d'heures lorsqu'il selectionne un horaire.
    (la propriété Kind est donc a dtkTime, pour mémoire)
    Que ce soit dans le click sur les flèches 'Up-Down', soit si il tente une saisie directe de l'heure voulu dans le composant.
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Et dans les événements OnChange ou OnUserInput du TDateTimePicker ?

    A plus !

  7. #7
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Ne peut tu pas faire un teste sur l'heure tu stock a partir de t = 0 par exemple 16h00, tu stock 16h15 ton T = 0 + 15mn, puis suivant le besoin tu fait un teste sur l'heure si elle n'est pas egale ou sup a 16h15 tu ne fais rien, sinon tu affiche 16h15 ou tu bloque l'acces a la modif et ainsi de suite
    Pour les sauts de 15mn en 15mn tu utilise un timer.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  8. #8
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Tu peu entrer dans un StringGrid tes heures de 0h00 a 24h00 et en fonction de l'heure entree tu fais un teste pour savoir si l'heure entree et dans la fourchette des 15 mn et tu affiche soit l'heure inf soit l'heure sup en fonction de ce que tu a decide.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  9. #9
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Independement de l'heure tu peu faire un teste sur les minutes.

    00
    15
    45
    30

    est ce que les minutes sont comprise entre 00mn et 15mn
    est ce que les minutes sont comprise entre 15mn et 30mn
    est ce que les minutes sont comprise entre 30mn et 45mn
    est ce que les minutes sont comprise entre 45mn et 00mn
    et tu excute tes conditions d'affichage
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    unsigned short hour;
    unsigned short min;
    unsigned short sec;
    unsigned short msec;
     
    unsigned short year;
    unsigned short month;
    unsigned short day;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void __fastcall TForm1::DateTimePicker1Change(TObject *Sender)
    {
    DateTimePicker1->DateTime.DecodeDate(&year, &month, &day);
    DateTimePicker1->DateTime.DecodeTime(&hour, &min, &sec, &msec);
    min = (min / 15) * 15;
    DateTimePicker1->Time = TDateTime(year, month, day) +
                            TDateTime(hour, min, sec, msec);
    }
    A améliorer sans doute !

    A plus !

  11. #11
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Re,

    Désolé, j'étais parti m'occuper du BB...
    Et bien merci pour vos réponses, je viens de tester la dernière proposition d'henderson, et celle ci m'a l'air tout a fait en phase avec ce que je voulais faire.
    Reste a savoir pourquoi je ne peut que modifier les minutes en cliquant sur la flèche du bas, celle du haut restant inactive. (mais si ya que ça, ça va pas trop m'handicaper)
    Ah si ! J'oubliais...faut que je trouve un psy pour qu'il me dise pourquoi j'envisage toujours les solutions les plus compliquées...

    Merci beaucoup pour votre aide,
    Bon ap
    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  12. #12
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Si c'est indispensable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned short prev_min;
    Le code pour la OnChange devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DateTimePicker1->DateTime.DecodeDate(&year, &month, &day);
    DateTimePicker1->DateTime.DecodeTime(&hour, &min, &sec, &msec);
    if((min - prev_min) == 1) min = (min + 14) % 60;
    min = (min / 15) * 15;
    DateTimePicker1->Time = TDateTime(year, month, day) +
                            TDateTime(hour, min, sec, msec);
    prev_min = min;
    Ca fonctionne bien pour les flèches mais pour une saisie par caractères... c'est un peu plus... comment dire... poétique...

    A plus !

  13. #13
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Pour la saisie manuelle il suffit d'ajouter le code mis dans le OnChange dans l'evenement OnUserInput et de mettre la propriété ParseInput du TDateTimePicher à la valeur true.

    Voila si ca peut aider quelqu'un
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Additionner des heures au format 00:00:00
    Par Armandra dans le forum Excel
    Réponses: 4
    Dernier message: 11/07/2014, 14h23
  2. Calculer des heures avec des nombres comme format 17:30
    Par leara500 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 04/01/2013, 10h23
  3. [XL-2010] Problème de format de cellule avec des heures
    Par shakapouet dans le forum Excel
    Réponses: 2
    Dernier message: 17/07/2012, 17h30
  4. axe des abscisses en format "date et heure"
    Par argonath dans le forum Excel
    Réponses: 7
    Dernier message: 17/04/2012, 10h17
  5. Réponses: 7
    Dernier message: 31/10/2006, 00h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo