L'objet invoqué s'est déconnecté de ses clients. 80010108

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 21 oct. 2004 à 13:38
JazzLiberator Messages postés 3 Date d'inscription mercredi 22 février 2012 Statut Membre Dernière intervention 22 février 2012 - 19 mars 2012 à 13:49
Bonjour,

VB m'affiche une erreur Automation dans mon code.
J'ai pu le reproduire dans cette maquette de UserControl :

Public Property Let BackColor(Color As Long)
    UserControl.BackColor = Color
End Property

Private Sub UserControl_InitProperties()
    Dim Obj As Object
    Randomize
    Dim Color As Long: Color = Val(Rnd * vbWhite)
    For Each Obj In UserControl.ParentControls
        If TypeOf Obj Is UserControl1 Then
            Obj.BackColor = Color
        End If
    Next Obj
End Sub


A chaque ajout d'un UserControl1 dans une Form, tous les UserControl1 présent changent de couleur. Simpliste, mais ca met en oeuvre ParentControls

au bout de 30 controles, j'ai l'erreur n°80010108

"L'objet invoqué s'est déconnecté de ses clients. "

j'ai demandé à gogole, mais rien de bien concluant...
je me tourne donc vers vous...

Amusez-vous ! ;)
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS

5 réponses

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
21 oct. 2004 à 20:16
Le code suivant marche sans probleme voici un lien vers ton bug je pense qu'il est deconseiller d'utiliser ParentControls surtout que Obj.Parent est disponible sur tout les Control Container donc a premiere vue on garde une bonne compatibilité

http://support.microsoft.com/kb/q223104/

Option Explicit

Public Property Let BackColor(ByVal Color As Long)
    UserControl.BackColor = Color
End Property

Private Sub UserControl_InitProperties()
    Dim Obj As Object
    Randomize
    Dim Color As Long: Color = Val(Rnd * vbWhite)
    'On Error Resume Next 'Facultatif
    For Each Obj In UserControl.Parent.Controls
        If TypeOf Obj Is UserControl1 Then
            Obj.BackColor = Color
        End If
    Next Obj
End Sub


@+ Cowboy ;)

E.B.
1