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 : 85
    Points
    85

    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 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2004
    Messages : 1 034
    Points : 1 305
    Points
    1 305

    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à...
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  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 : 85
    Points
    85

    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 expérimenté
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    649
    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 : 649
    Points : 1 322
    Points
    1 322

    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 expérimenté Avatar de nirgal76
    Homme Profil pro
    Autre
    Inscrit en
    septembre 2007
    Messages
    775
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : septembre 2007
    Messages : 775
    Points : 1 619
    Points
    1 619

    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 : 85
    Points
    85

    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
    280
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : janvier 2003
    Messages : 280
    Points : 329
    Points
    329

    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, 11h05
  2. Réponses: 2
    Dernier message: 03/06/2009, 15h38
  3. simulation de la list déroulante d'une combobox
    Par CAMIC dans le forum Windows
    Réponses: 2
    Dernier message: 07/05/2008, 12h08
  4. Réponses: 4
    Dernier message: 29/03/2005, 17h45
  5. [composant] liste déroulante pour une propriété ?
    Par BoBoToTo dans le forum Composants VCL
    Réponses: 4
    Dernier message: 24/05/2004, 17h16

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