LISTBOX intégrée à une variable utilisateur

Signaler
Messages postés
7
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
17 février 2007
-
Messages postés
7
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
17 février 2007
-
    Bonsoir,


Dans un petit prgm je souhaite utiliser une LISTBOX inclue à une
variable utilisateur mais une action sur cette variable ListBox créer
une erreure. Il s'agit surement d'utiliser l'ordre SET mais je ne sais
pas comment procéder.


J'ai créer une variable


type VariableTest

    A as single

    B as Integer

    ListB as listBox

end type


dim VariableUtilisateur(4) as VariableTest


Mais lors de l'exécution les lignes suivantes provoquent une erreure


VariableUtilisateur(1).ListB.additem "12"

ou

VariableUtilisateur(1).listB.clear


Quelqu'un peut li me renseigner?


Merci par avance


Marmounet

8 réponses

Messages postés
174
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
15 février 2007
2
Bonjour

a mon avis, c'est parce que c'est sous la forme d un objet et VB doit attendre une listbox physique.

en effet :

Var(1).ListB.ListCount

renvoie une erreur donc la listbox n existe meme pas...

Maintenant, pour contourner le probleme si ma théorie est bonne, pourquoi ne pas passer par un tableau par exemple ?

ps : Ya ptet un moyen de faire fonctionner comme ca aussi hein mais pour le moment, je vois pas trop. C'est ptet possible et super facilement ^^
Messages postés
174
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
15 février 2007
2
alors correction, c'est pas une question de physique puisque meme en ajoutant une list box ListB, ca plante qd meme . C'est donc autre chose.

Mon alternative est toujours possible mais le probleme reste entier avec cette méthode
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
78
Salut
Peu commun comme solution !
Pour stocker des objets (composants), il n'y a que les collections.

Mais ce que tu peux faire, c'est créer une première ListBox ayant l'index 0, puis créer des copines avec Load maListBox(Index) où :
maListBox est le nom de ta ListBox (bien trouvé, hein !)
Index est un chiffre allant de 1 à 255 (une Form ne peut pas accueillir plus de 255 objets)
Par défaut, après un Load, les ListBox sont invisibles.
Si tu as besoin d'afficher ces ListBox, il te suffit de mettre maListeBox(monIndex).Visible = True et de la positionner avec maListeBox(monIndex).Move ...
Puisque tes ListBox ont un index, il suffit d'utiliser le même index dans ton tableau standard VariableUtilisateur
VariableUtilisateur(1).ListB.additem "12" --> ListB(1).additem "12"
ou
VariableUtilisateur(1).listB.clear --> listB(1).clear

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
If faut pour celà que la listbox existe ou soit créée dynamiquement !

Une form, un bouton Command1 et une listbox List1

Voilà comment celà peut marcher avec un type :

Private Type VariableTest
    A As Single
    B As Integer
    ListB As ListBox
End Type


Dim VariableUtilisateur As VariableTest


Private Sub Form_Load()
  Set VariableUtilisateur.ListB = List1
End Sub




Private Sub Command1_Click()
  VariableUtilisateur.ListB.AddItem "voilà"
End Sub


 
Messages postés
174
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
15 février 2007
2
exact ^^

pas pensé :p
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
29
Salut,
il faut effectivement que la ListBox existe, ensuite tu peux l'affecter

Private Type VariableTest
    A As Single
    B As Integer
    ListB As ListBox
End Type

Private Sub Command1_Click()
    Dim VariableUtilisateur(4) As VariableTest
   
    Set VariableUtilisateur(1).ListB = List1
    VariableUtilisateur(1).ListB.AddItem "12"
     
    Set VariableUtilisateur(2).ListB = List2
    VariableUtilisateur(2).ListB.AddItem "13"
  
End Sub

Daniel
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
78
Oups, j'avais pas fait gaffe à la déclaration du tableau ... qui n'en est pas un, en effet.
Ok a un détail près : Si on dimensionne une variable dans une procédure, elle n'est valide que dans celle-ci.
Je pense qu'il faudrait mettre le Dim dans la partie Déclaration de la forme.

Mais je reste sur ma première impression : Une variable ne peut pas accueillir d'objet --> Voir Collection
Messages postés
7
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
17 février 2007

Merci à tous
Pour renseigner la curiositée des ceux qui ont pris la peine de répondre. Je souhaitais me servir l'une listBox pour trier automatiquement les chaines que le prgm génere par diverses routines. Dans mon cas 250 variables est un nombre tout à fait acceptable
Je vais tester la solution dés ce soir
Merci encore
Marmounet