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 :

Modification de la position de la liste déroulante d'une Combobox


Sujet :

C++Builder

  1. #1
    Membre régulier Avatar de Shionigami
    Inscrit en
    Novembre 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 41
    Points : 93
    Points
    93
    Par défaut Modification de la position de la liste déroulante d'une Combobox
    Bonjour,

    Je suis actuellement en train de développer une application sous C++ Builder 6 dans laquelle je me sers de ComboBox pour sélectionner des informations, me permettant de filtrer les données contenues dans un StringGrid.

    J'arrive à faire en sorte que lorsque la liste déroulante apparait, elle soit de la taille de la plus longue chaine de caractères contenue dans la liste.
    Cependant, mon problème est le suivant : lorsqu'une combobox est proche de la droite de l'écran, les informations sont tronquées, car en dehors de l'écran.

    J'aimerai savoir s'il est possible de faire en sorte que la liste déroulante sois alignée sur la droite de la Combobox plutot que sur la gauche ? J'ai déjà fait le tour de pas mal de site et forum et je n'ai rien trouvé de concluant...

    Merci par avance.

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Pour agrandir la taille des items de la liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      ComboBox1->Perform(CB_SETDROPPEDWIDTH, 300, 0);
    //ou
      SendMessage( ComboBox1->Handle, CB_SETDROPPEDWIDTH, 300, 0);
    [EDIT] Pardon, j'avais mal lu la question, ce n'est pas ce que tu demande, apparemment tu le savait déjà...

  3. #3
    Membre régulier Avatar de Shionigami
    Inscrit en
    Novembre 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 41
    Points : 93
    Points
    93
    Par défaut
    Je joins deux images qui illustrent mes propos.

    La première montre le résultat que j'ai lorsque je déroule ma liste... la seconde est un montage que j'ai fait pour montrer le résultat que je souhaite obtenir
    Images attachées Images attachées   

  4. #4
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 950
    Points
    1 950
    Par défaut
    Citation Envoyé par Shionigami Voir le message
    Je joins deux images qui illustrent mes propos.

    La première montre le résultat que j'ai lorsque je déroule ma liste... la seconde est un montage que j'ai fait pour montrer le résultat que je souhaite obtenir
    Je pense que tu es obligé de passer par l'événement OnDrawItem()
    et écrire :

    ...
    MaComboBox->Canvas->TextOut(Rect.Left, Rect.Top, MaComboBox->Items->Strings[Index]);

    Je dis cela de mémoire, et actuellement je n'ai pas BC++ pour vérifier mais il doit y avoir un moyen avec TextOut pour justifier le texte à droite.

    C'est peut être une piste, à voir...

  5. #5
    Membre chevronné Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 906
    Points : 2 130
    Points
    2 130
    Par défaut
    La partie déroulante étant une fenêtre windows elle aussi, tu peux trouver son handle de fenêtre (en énumérant les fenêtres filles du combobox) et la déplacer ensuite avec une fonction comme SetWindowPos. reste à trouver le bon moment pour faire tout ça
    C'est deja ce que fait le TComboBox en interne dans la fonction "AdjustDropDown" (appelée dans le traitement du message CBN_DROPDOWN) sauf que lui, il a deja le handle puisqu'il l'a créé, pas besoin de le rechercher (cf. stdctrls.pas)

  6. #6
    Membre régulier Avatar de Shionigami
    Inscrit en
    Novembre 2006
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 41
    Points : 93
    Points
    93
    Par défaut
    Ok merci pour ces pistes !

    Pour le moment je suis passé à autre chose (je vais pas rester sur un telle problème non plus hein ), donc j'essaierai plus tard, et vous tiendrai au courant

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    Les message CB_SETDROPPEDWIDTH permet de modifier la largeur de la liste déroulante d'une combo:

    http://msdn.microsoft.com/en-us/libr...01(VS.85).aspx

    cf. SetDroppedWidth dans les MFC (qui encapsule ce message).

Discussions similaires

  1. Modification de liste déroulante dans une requête access
    Par Barbare01 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 10/12/2014, 10h05
  2. Modification d'une liste déroulante depuis une autre fenètre ouvertre
    Par dirty_harry dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/06/2009, 14h38
  3. simulation de la list déroulante d'une combobox
    Par CAMIC dans le forum Windows
    Réponses: 2
    Dernier message: 07/05/2008, 11h08
  4. Griser 1 liste déroulante liée à une autre, pb de concaténat
    Par linou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/03/2005, 16h45
  5. [composant] liste déroulante pour une propriété ?
    Par BoBoToTo dans le forum Composants VCL
    Réponses: 4
    Dernier message: 24/05/2004, 16h16

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