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

Windows Discussion :

Une liste de combo box


Sujet :

Windows

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 36
    Points : 22
    Points
    22
    Par défaut Une liste de combo box
    Bonjour,

    je suis en train de réaliser un logiciel sous visual c++ 6.0 et pour mon interface utilisateur je souhaiterai insérer une liste composée de deux colonnes:
    - une d'items simples type text
    - une d'items non editables mais pouvant etre choisis dans un menu déroulant (en gros une combo box)

    De plus je n'utilise pas les MFC dans ce logiciel et ça m'embêterait d'en mettre juste à cause d'un control d'une option d'un sous menu ...

    Je sais qu'il existe des FlexGrid mais la encore est-ce que je risque pas d'alourdir mon code?

    Si vous avez une idée d'implémentation d'un tel control avec ses contraintes, je vous remercie d'avance de m'en faire part.

    merci

    sybilla

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    je n'utilise pas les MFC
    Win32 ?

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    oui win32

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    Pour préciser mon problème:
    en fait je veux faire une ListCtrl sans MFC (donc sans CListCtrl), en mode report (à 2 colonnes)

    les lignes d'un ListCtrl sont composées d'un item (colonne 1) et de subitem (colonne 2,3,...)

    j'aimerai en fait que le subitem 2 (ma deuxieme colonne) ne soit pas des items classiques type texte mais carrément des combo box.

    Je me bats en ce moment avec les messages à passer au control mais je ne trouve rien qui me permette de remplacer un subitem par un control

    Merci encore de votre attention à mon problème

    sybilla

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Je pense qu'il faut subclasser ton ListCtrl et réagir au clic gauche (WM_LBUTTONUP par ex) dans la colonne adéquate en créant à la volée une combo qui sera détruite si l'utilisateur sélectionne un item ou fait ESC.

    Simple, non ?
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  6. #6
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par rigobert
    Je pense qu'il faut subclasser ton ListCtrl et réagir au clic gauche (WM_LBUTTONUP par ex) dans la colonne adéquate en créant à la volée une combo qui sera détruite si l'utilisateur sélectionne un item ou fait ESC.
    Créer un combo à chaque clic sur un item, ça doit être couteux.

    Mieux faut le créer quand l'item est crée et le détruire avec l'item.

    Citation Envoyé par sybilla
    Je me bats en ce moment avec les messages à passer au control mais je ne trouve rien qui me permette de remplacer un subitem par un control
    Il n'y a pas de messages pour ça, il faut le gérer toi même.
    L'itération est humaine; la récursion, divine.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par Mayti4
    Créer un combo à chaque clic sur un item, ça doit être couteux.
    Mieux faut le créer quand l'item est crée et le détruire avec l'item.
    Mouais... S'il y a 10 000 items dans la liste, tu crées 10 000 combos ? Ca, c'est coûteux !
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  8. #8
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par rigobert
    Mouais... S'il y a 10 000 items dans la liste, tu crées 10 000 combos ? Ca, c'est coûteux !
    En temps, non !

    Si on a de la mémoire, autant l'utiliser.

    Puis les combos ne contiennent pas forcément la même chose, donc un traitement en plus.
    L'itération est humaine; la récursion, divine.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Points : 542
    Points
    542
    Par défaut
    Citation Envoyé par Mayti4
    Si on a de la mémoire, autant l'utiliser.
    Pas d'accord : certaines ressources système (comme les DC par ex) ne sont pas toujours bien gérées par les "vieux" Windows (95/98/ME), et ouvrir plusieurs dizaines de milliers de fenêtres simultanément peut mettre le système à genou, avec 64 Mo de RAM comme avec 2 Go.
    "La forme même des Pyramides prouve que de tous temps, les ouvriers n'ont jamais pensé qu'à en faire de moins en moins."

    G. CLEMENCEAU

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    Merci pour toutes ces réponses,
    en effet c'est la seule solution.
    j'ai subclasser un click sur mon control pour y réafficher (si je suis au dessus d'un sub item) une combo box.
    J'assigne la nouvelle valeur du subitem sur un click en dehors de cette zone (destruction de ma combo box)

    je ne créé qu'une combo à chaque fois.

    Maintenant il ne me reste plus qu'à trouver comment editer la taille (hauteur) de mes lignes de la liste car les combo box dépasse (taille minimale de combo box atteinte)
    Avec les MFC c'est un ::SetItemHeight, mais là je ne sais pas, j'hésite entre modifier la fonte (en plus gros) de mes items ou parvenir à récuperer la zone de chaque cellule.

    Mais tout cela est une autre histoire...

    Merci

    Sybilla

  11. #11
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par sybilla
    Maintenant il ne me reste plus qu'à trouver comment editer la taille (hauteur) de mes lignes de la liste car les combo box dépasse (taille minimale de combo box atteinte)
    Avec les MFC c'est un ::SetItemHeight, mais là je ne sais pas, j'hésite entre modifier la fonte (en plus gros) de mes items ou parvenir à récuperer la zone de chaque cellule.
    Message LB_SETITEMHEIGHT.
    L'itération est humaine; la récursion, divine.

  12. #12
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 36
    Points : 22
    Points
    22
    Par défaut
    Heu je ne suis pas sur que LB_SETITEMHEIGHT fonctionne pour une ListView, j'utiliserai plutot WM_MEASUREITEM.

    Quoique ça ne marche pas encore...

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/02/2015, 19h51
  2. [AC-2010] List-box (ou combo-box) dépendant l'un de l'autre dans une table
    Par bibi_50 dans le forum Access
    Réponses: 2
    Dernier message: 06/08/2014, 10h53
  3. [WD17] Supprimer une ligne de combo box
    Par tun_01 dans le forum WinDev
    Réponses: 6
    Dernier message: 19/03/2014, 11h14
  4. Modifier la couleure d'une liste a choix (combo box)
    Par echantillon dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 03/02/2007, 22h13
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

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