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 :

AutoDropDown DateTimePicker ???


Sujet :

C++Builder

  1. #1
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Points : 331
    Points
    331
    Par défaut AutoDropDown DateTimePicker ???
    Bonjour à tous,

    bizarrement je ne trouve pas de propriété AutDropDown pour "dropper" automatiquement mon DateTimePicker quand je passe dessus !!! Je trouve ça assez bizarre que cette propriété ne soit pas présente. Est ce que je suis en train de passer à coté de quelque chose de trivial ??
    L'héroïsme, c'est encore la meilleure façon de devenir célèbre quand on n'a pas de talent
    Pierre Desproges

  2. #2
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    AutoDropDown est une propriété de ComboBox je crois..

    Je ne pense pas que le fait qu'elle ne soit pas présente dans TDateTimePicker soit démuni de sens :

    quand on regarde de plus près on a 2 comportements différents par rapport au focus :

    - dans la combobox en mode dropdown, on a toujours le focus sur la zone d'edition

    - dans le DateTimePicker , on a soit le focus dans la zone d'edition soit sur le sous composant calendar ( SysMonthCal32 )..

    donc ... si on met une sorte d'AutoDropDown, on ne peut plus rentrer directement une date dans la zone d'edition,
    puisque au moment ou on change, par exemple le jour,
    le focus va sur le calendrier, et on est obligé de choisir la date via ce calendrier :
    Donc après avoir entré le jour via le clavier, pour rentrer le mois via le clavier on serait obligé avant de recliquer sur la zone d'édition pour lui redonner le focus..
    ..et là c'est galère pour l'utilisateur qui préfère entrer la date directement...

    je ne sais pas si j'ai été assez limpide enfin
    Si malgré tout tu veux emuler le dropdown automatiquement j'ai une "Very Dirty Solution" qui consiste à envoyer une sorte de SendKey (ALT+FLECHE BAS) sur le DateTimePicker:

    tu pourras constater par toi même le probleme que cela engendre...

    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
     
    void __fastcall SimulateKeyDown(byte Key  ){
            keybd_event(Key, 0, 0, 0);
    }
    void __fastcall SimulateKeyUp(byte Key )
    {
            keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
    }
    void __fastcall TForm1::DateTimePicker1Change(TObject *Sender)
    {
           // DateTimePicker1->SetFocus();  //si appelé d'un bouton donner le focus au DTP. avant
           SimulateKeyDown(VK_MENU);
           SimulateKeyDown(VK_DOWN);
           SimulateKeyUp(VK_DOWN);
           SimulateKeyUp(VK_MENU);
    }

  3. #3
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Points : 331
    Points
    331
    Par défaut
    ouais je vois très bien ce que tu veux dire.

    Par contre quand tu dis :
    dans le DateTimePicker , on a soit le focus dans la zone d'edition soit sur le sous composant calendar ( SysMonthCal32 )
    cela signifie-t-il que je peux accéder au sous composant SysMonthCal32 et forcer le focus dessus ??

    Si c'est le cas, c'est exactement ce qui m'intéresse car en fait j'ai un bouton et sur l'événement OnClick de ce bouton, je veux faire apparaitre mon DateTimePicker et l'ouvrir donc forcer le focus sur le SysMonthCal est exactement ce que je cherche !!

    J'ai pensé à actionner l'événement OnClick de mon DateTimePicker lors de mon clic sur le bouton pour que le DateTimePicker s'ouvre mais je ne trouve pas ça très propre.
    L'héroïsme, c'est encore la meilleure façon de devenir célèbre quand on n'a pas de talent
    Pierre Desproges

  4. #4
    Membre actif
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Points : 279
    Points
    279
    Par défaut
    Je ne suis pas sûr que l'on puisse acceder facilement à au sous-composant SysMonthCal32 ....


    Citation Envoyé par en effet j'ai
    dans le DateTimePicker , on a soit le focus dans la zone d'edition soit sur sous composant calendar ( SysMonthCal32 )
    mais c'est automatique : le focus est mis sur le SysMonthCal32 des qu'il apparait et revient sur la zone d'edition dès qu'il disparait : il n'ya pas besoin de le forcer ...

    Sinon à part ça j'ai peut être une méthode plus propre pour déclencher l'ouverture , en envoyant un message de type WM_SYSKEYDOWN...:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      DateTimePicker1->Perform(WM_SYSKEYDOWN, VK_DOWN, 0);
    }

  5. #5
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Points : 331
    Points
    331
    Par défaut
    salut,

    nikel ça reproduit le comportement que je cherchais. J'avoue que je ne connaissais pas du tout cette méthode Perform.

    Par contre tu vas peut être m'expliquer le comportement exact : ce que je comprends, c'est que ça donne le focus à mon DateTimePicker et ça le force à se "déplier".
    Mais on dirait que si je clique sur un autre bouton (ou endroit) aussitot après (sans cliquer sur une date de mon calendrier), mon calendrier perd le focus (referme mon calendrier) mais n'exécute pas le traitement de l'événement du clic du bouton cliqué. Il faut pour cela que je rappuye sur ce bouton.
    Je pense que ce comportement est normal mais je voudrais juste que tu m'expliques exactement ce qui se passe dans mon ordi (si tu as le temps bien sur).

    En tout cas merci pour toutes ces informations qui m'ont déjà bien aidé !!

    Thanks a lot
    L'héroïsme, c'est encore la meilleure façon de devenir célèbre quand on n'a pas de talent
    Pierre Desproges

  6. #6
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2003
    Messages : 302
    Points : 331
    Points
    331
    Par défaut
    c'est bon : g trouvé tout seul cette fois ci

    Merci pour ton aide.

    ++
    L'héroïsme, c'est encore la meilleure façon de devenir célèbre quand on n'a pas de talent
    Pierre Desproges

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/06/2007, 13h48
  2. [C#] DateTimePicker web user control
    Par titi29 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 29/06/2004, 18h38
  3. DateTimePicker
    Par agodinasandrien dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/12/2003, 09h17
  4. [DateTimePicker]Recuperation valeur date
    Par jane2002 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 11/02/2003, 11h29
  5. DateTimePicker
    Par benj63 dans le forum C++Builder
    Réponses: 5
    Dernier message: 08/07/2002, 12h05

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