Remplissage ListBox avec décallage

Résolu
Signaler
Messages postés
50
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
12 novembre 2011
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Bonjour à tous

Quelqu'un pourrait-il me dire comment faire ?
En VB6++, j'ai une ListBox dans laquelle je fais venir la colonne d'une table fabriquée sous Access2000. Tout ce passe comme prévu, et tout marche quand je clique sur un enregistrement ...
Mais je n'arrive pas à intégrer certains de ces enregistrements avec un décallage au début, par exemple un espace de 3 lettres puis seulement après le mot en question. Cela doit ressembler à ce qui suit :

prune
prunier
fraise
fraise des bois
fraise sauvage
éléphant
éléphant d'Afrique
lapin
oiseau
musaraigne
etc ...

donc, uniquement que pour certains enregistrements que j'aurai marqué d'un signe dans une des colonnes de ma base Access.
J'ai essayé plusieurs choses mais sans succès, y compris mettre des blancs avant les mots en question dans ma base, mais quand je la charge avec mon programme VB, il trouve des blancs, et mes donc tous ces enregistrements au tout début de ma liste dans ma ListBox, ce que je ne veux pas.
Dans le même genre, est-il possible de changer dans ma ListBox, la couleur de ma Police et là aussi uniquement pour certains enregistrements repérés au préalable dans ma BdD évidemment.

Merci encore pour une réponse claire et rapide si possible.
Bonne programmation à toutes et à tous,
A+
Janeo

9 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

essai un truc du genre :

Dim NbItem As Integer, ItemSelectionne As String, AncienItem As String, NbCar As Long, NomComp As String

NbItem = ListBox.ListCount
AncienItem = "rien"

For i = 0 To NbItem
NbCar = Len(AncienItem)
ItemSelectionne = ListBox
NomComp = Mid(ItemSelectionne, 1, NbCar)
If AncienItem = NomComp Then
ItemSelectionne = " " & ItemSelectionne 'ajoute 3 espaces
End If
AncienItem = ListBox

' t'as plus qu'a trouver le code à placer ici (que je ne connais pas) pour remplacer l'item sélectionné dans la liste par le nouveau "ItemSelectionne"

Next i

Désolé pour le bout de code manquant mais c'est déjà ça.

@ ++
Bon courage
Mortalino
3
Messages postés
50
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
12 novembre 2011

Salut Mortalino,

Merci pour ta réponse. Je vais partir dans ce sens, mais comme je n'ai pas le temps de suite, j'accepte déjà ta réponse.
Sympa de ta part,

Bonne journée
@+
0
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Salut 134976 Janeo, salut =647037 mortalino,

ça faisait longtemps 134976 Janeo.
=647037 mortalino, en fait, apparemment, ce que veut dire Janeo, c'est que la ListBox trie les éléments ajoutés, et que, du coup, ceux qui commencent par des espaces se retrouvent en haut de la liste.
En fait, c'est un problème de tri.
De plus, vraissemblablement, ce n'est pas la ListBox qui a un problème de tri, mais la requête exécutée.

Une solution simple (parmi tant d'autres) consiste à ajouter une colonne dans ta table de base de données (colonne que tu peux nommer ID). Tu donnes à cette colonne le type NumeroAuto. Access se chargera de numéroter automatiquement chaque nouvel enregistrement.

Mais ceci ne résoud pas encore le problème de ceux qui sont déjà dans la table.
Donc, avant d'ajouter la colonne, il faut récupérer tes enregistrements existants (avec une table temporaire, par exemple), les enlever de la table à modifier, modifier la table, remettre les enregistrements de la table temporaire vers la table modifiée, et supprimer la table temporaire (si tout a bien marché, vérifies avant de supprimer).

Enfin, pour que cette manipulation (ce n'est pas encore le cas), il faut, dans la requête qui te sert à remplir la ListBox, ajouter une clause ORDER BY sur le champ ID. Du coup, ta requête respectera l'ordre naturelet ne tiendra plus compte des espaces).

Ceci dit, la technique des espaces pour indenter n'est pas viable. Et j'en profite, ici, pour répondre à ta 2ème question : non, tu ne peux pas changer la police ou la couleur d'un élément de ta ListBox, individuellement.
Pourquoi j'en profite ici pour mélanger les 2 problèmes?

Parce qu'il faut utiliser un autre contrôle que le ListBox pour arriver à tes fins. Par exemple, le MSComctlLib.TreeView (composant Microsoft Windows Common Controls 6.0) ne se prête pas trop mal à ce genre d'utilisation, mais nécessite une prise en main différente du ListBox (plus pointue, mais plus efficace, beaucooup plus).
Ce composant n'est autre que l'arborescence que tu peut observer dans ton navigateur Windows. Et tu peux le configurer pour qu'il ne ressemble pas trop à une arborescence, mais plus à du texte indenté.

Si cela t'interesse, dis -le ici.

à+ vous 2

rvblog<sup>n
</sup>                                                     <sup>Merci d'avoir accepté la réponse :)
Je veux ton bien....et je l'aurais....mais jamais avant la page 4 des derniers échanges
</sup>
0
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Et puis, juste pour te faire envie :

avec le TreeView dont je te parle (pardon pour le choix des couleurs, et la piètre qualité de la photo et la mise en scène:) )

à+
rvblog<sup>n
</sup>                                                     <sup>Merci d'avoir accepté la réponse :)
Je veux ton bien....et je l'aurais....mais jamais avant la page 4 des derniers échanges
</sup>
0
Messages postés
50
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
12 novembre 2011

Salut rvblog

Bien heureux de te retrouver !
Merci pour ta réponse. J'avais pourtant cherché à qqchose du genre que tu m'indiques avec Access, mais je ne sais pas pourquoi, je n'y étais pas arrivé.
Enfin, j'ai bien compris !
Sûr que ça m'interesse le Treeview. Je n'avais pas essayé avec composant, vu que je ne sais pas comment l'utiliser, à chaque fois, je ne vois que l'arborescence du disque, donc ...
Mais, en voyant ce que tu arrives à faire avec, il est vrai que cela m'interesse. Donc, dès que tu auras 1 minute, merci de revenir sur le sujet.

Bonne soirée.
Xcuse le texte qui est un peu maladroit, mais je suis fatigué !
A+
Janeo
0
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Bonsoir Janeo,

j'en prend bonne note. Je verrais ça demain. 
Bon, d'ici là, reposes-toi :)

à+
rvblog<sup>n
Je veux ton bien....et je l'aurais....mais jamais avant la page 4 des derniers échanges</sup>
0
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut Rvblog, bien vu le TreeView, effectivement, ça le fait bien comme ça !

Bon courage à Janeo pour son prog.

++
Mortalino
0
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
Salut mortalino,

merci, je vois bien que tu te moques des couleurs :)

c'est marrant, je venais juste de me déconnecter, et j'ai vu mail.
Alors je suis repassé dire Bonsoir!

à+

rvblog<sup>n
Je veux ton bien....et je l'aurais....mais jamais avant la page 4 des derniers échanges</sup>
0
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Bien le bonsoir à toi aussi.

Je reconnais que mon Post pouvait ressembler à une petite moquerie et pourtant, pas du tout. Je ne connaissais pas le TreeView et ça à l'air d'être l'idéal pour ce que Janéo à besoin.

Pour la mise en scène, c'est mieux ce que tu as fait que d'avoir une croix (car l'image ne s'affiche pas).

A bientôt rvblog.
Bon courage Janéo.

++
Mortalino
0