edt992
Messages postés18Date d'inscriptionmercredi 19 juillet 2006StatutMembreDernière intervention10 avril 2008
-
19 mars 2007 à 17:01
edt992
Messages postés18Date d'inscriptionmercredi 19 juillet 2006StatutMembreDernière intervention10 avril 2008
-
19 mars 2007 à 20:31
Bonjour,
Je souhaitre créer pendant l'exécution de mon programme une ListBox avec multi-sélection. Je mets donc dans une Form :
Private Sub Form_Load()
Dim L As ListBox
Set L = Me.Controls.Add("vb.ListBox", "MyListObject")
L.MultiSelect = 2
End Sub
Mais j'ai l'erreur assez logique : Impossible d'affecter à une propriété en lecture seule...
Du coup, à quel moment puis-je indiquer que ma liste est en mode sélection multiple ?
En fait, mon problème est dans un UserControl, mais c'est plus simple de le mettre en évidence dans une Form.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 19 mars 2007 à 18:53
Salut
(J'ai changé la rubrique et effacé ta question qui se retrouvait en double)
Pour ta question : Ce n'est pas toujours possible :
Si certaines propriétés sont en lecture seule, c'est qu'il n'est pas prévu de les modifier en run-time (La Palice 1470-1525)
Il existe parfois certaines possibilités avec les APIs comme SendMessage d'y accéder, mais ce n'est pas un cas général et pas pour tous les contrôles.
La difficulté supplémentaire est que, quand tu utilises un User Control dans une application, le composant est déjà "vivant" même en mode création. Il devient donc impossible d'utiliser une ListBox dans un UserControl et de vouloir modifier certaines de ses propriétés au travers de propriétés maison, même en mode création de ton application.
Dans ton cas, c'est la même chose.
Hélas, je ne connais pas de solution ...
Ce que tu peux faire, c'est créer une ListBox avec la propriété MultiSelect et un Index 0, puis, quand tu as besoin d'en générer une, faire un
Load maListBox(1)
Ca te recopiera la ListBox d'origine dans une nouvelle avec l'index 1
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
edt992
Messages postés18Date d'inscriptionmercredi 19 juillet 2006StatutMembreDernière intervention10 avril 2008 19 mars 2007 à 17:33
Effectivement, je me suis trompé de ligne en sélectionnant le forum, désolé !
Sinon, merci pour la réponse, mais je sais gérer les évenements de mes objets créés en runtime. Mon problème, c'est de modifier une propriété qui est modifiable uniquement à la création.
Enfin, je vais poster sur le bon forum cette fois, en précisant un peu mieux ma question
edt992
Messages postés18Date d'inscriptionmercredi 19 juillet 2006StatutMembreDernière intervention10 avril 2008 19 mars 2007 à 20:31
Bonjour,
Tout d'abord, merci d'avoir transféré ma question.
Je ne savais pas qu'on pouvait cloner comme ça des objets indexé, c'est intéressant à savoir.
Dans mon cas, ça n'est malheureusement pas utile, parce que je n'ai besoin que d'une seule instance de ma liste. Je voulais la créer dynamiquement, parce que l'instance de mon usercontrol a rarement besoin de cette liste, et il y aura beaucoup d'instances simultanées de mon usercontrol, donc c'est un peu idiot de créer autant de liste qu'il y aura de usercontrol...
Enfin, si c'est la seule solution, il faudra bien que je m'y fasse !