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 :

ListBox


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Par défaut [Resolu]ListBox
    BonjourJ'ai besoin d'aide pour utiliser un control listbox en multicolumn.

    J 'ai mis la propriete a LBS_MULTICOLUMN
    Mais je ne vois pas comment acceder aux colonnes.
    Je sais le remplir en simple colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SendMessage (hwndLb,LB_ADDSTRING ,0,(LPARAM)(LPCTSTR)lpstrString);
    Je bosses avec visual studio 6 (sans MFC)

  2. #2
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Bonjour
    Peux tu donner plus de précision sur la signification que tu donne à "multi colonnes" : En effet, à ma connaissance, le contrôle ListBox permet d'afficher UNE SEULE COLONNE d'une table, sur plusieurs colonnes. C'est donc simplement un type d'affichage.
    Donc, si tu veux afficher DEUX colonnes d'une table, il faut utiliser un contrôle ListView. Si c'est dans ce second cadre que s'inscrit ta question, le code ci dessous te renvoit par exemple la valeur contenue dans la seconde colonne (subitem) du premier item.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtChercher.Text = lvMyListView.SelectedItems[0].SubItems[1].Text;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Par défaut Re Listbox
    Je ne veux pas afficher une colonne d'une table .
    Je vaux juste savoir si en c windiows, il est possible d'avoir une listbox avec plusieurs colonnes.

    Au fait pour afficher un LPSTR lpstrString ds une listbox
    c'est bien SendMessage(hwdnLB,LB_ADD,0,(LPARAM)(LPCTSTR)lpstrString);

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 055
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Une ListBox multicolonnes est tout-à-fait possible. A vue de nez, je vois deux solutions :

    - Une liste box affublée du style LBS_MULTICOLUMN. Tu peux régler la largeur des colonnes à l'aide du message LB_SETCOLUMNWIDTH;

    - Une ListBox avec le style LBS_USETABSTOPS, dans laquelle tu peux simuler plusieurs colonnes et ajuster les taquets de tabulation à l'aide du message LB_SETTABSTOPS.

    Le fonctionnement des deux styles de colonnes est différent :

    - Avec la LBS_MULTICOLUMN, au lieu d'un scrolling vertical simple, les élements se décalent de colonne en colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    --------------------------
    | Elément 1    Elément 5 |
    | Elément 2    Elément 6 |
    | Elément 3    Elément 7 |
    | Elément 4              |
    --------------------------
    - La LBS_USETABSTOPS permet d'aligner plusieurs champs sur la même ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ----------------------------
    | DUCHEMIN  A.  08/12/1965 |
    | DUPONT    J.  13/07/1988 |
    | DURANDOT  M.  29/02/1980 |
    | DUSART    P.  31/01/1977 |
    ----------------------------
    Tout dépend de l'utilisation que tu veux en faire.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Citation Envoyé par Alcatîz
    - La LBS_USETABSTOPS permet d'aligner plusieurs champs sur la même ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ----------------------------
    | DUCHEMIN  A.  08/12/1965 |
    | DUPONT    J.  13/07/1988 |
    | DURANDOT  M.  29/02/1980 |
    | DUSART    P.  31/01/1977 |
    ----------------------------
    Peux tu donner plus d'information sur cette possibilité. Merci.

  6. #6
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 055
    Billets dans le blog
    2
    Par défaut
    Il faut prendre soin d'inclure des caractères TAB (#9) dans les chaînes pour aligner les différents champs.

    Pour définir les taquets de tabulation, il faut créer un tableau de N entiers (avec les abscisses des N taquets) puis passer l'adresse de ce tableau comme paramètre, ainsi que le nombre de taquets.

    Un exemple (en Pascal, mais qui doit être facilement traductible en un autre langage) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Type tTaquets = Array [1..3] of Integer;
    
    Var Taquets : tTaquets;
    
    SendDlgItemMessage(hWnd,IdListBox,lb_SetTabStops,3,LongInt(@Taquets));
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  7. #7
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Comme je vois que vous maniez tous deux l'API SendMessage, avez vous des informations sur sont utilisation avec une ListView : J'ai la déclaration, l'appel de la dll, les paramètres à passer (dont les membres de la structure LVFINDINFO), et avec tout celà, je n'arrive pas à la mettre en oeuvre
    J'utilise cette API pour trouver le premier item d'une ListeView dont un subitem correspond au contenu d'une TextBox.
    Si il faut plus de renseignement, dites le moi et j'ouvrirais un tread spécifque.
    Merci.

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

Discussions similaires

  1. DrawItem d'un listbox...
    Par scorpiwolf dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/06/2007, 15h50
  2. [Listbox] ScrollBar Horizontal
    Par haleem dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/04/2005, 07h53
  3. Recuper les items de ListBox d'une autre application [API?]
    Par Shamanisator dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/09/2002, 12h32
  4. [Canvas] Listbox, couleur et multiselect
    Par rbag dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/09/2002, 13h02
  5. Copier le texte d'un ListBox dans le clipboard.
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/08/2002, 08h20

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