Objet contenu dans une frame ? [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
13 mai 2008
-
Messages postés
18
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
13 mai 2008
-
  Bonjour,

Mon soucis est le suivant.
Je cherche un moyen de savoir si un objet est dans une frame.
C'est un dire un truc du style
   If MonObjet is in frame1 then

Vous allez me dire on peut faire
   if MonObjet.container.name = "frame1" then

Sauf que le parent de premier niveau n'est pas forcément la frame1.
Par exemple, MonObjet est dans la frame4, qui est dans la PictureBox2, qui est dans la frame1.
Je veut savoir que mon objet est dans la frame1.
Une idée svp  ???

7 réponses

Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
Function IsInFrame(byval Obj As Control,byval fraName As String) As Boolean
If Obj.Container.Name = fraName then ' Si l'objet est dans la frame voulue
IsInFrame = True ' On renvoie True
ElseIf Not Obj.Container Is nothing Then ' Sinon si le container à un container
IsinFrame = IsInFrame(Obj.Container,fraName) ' On teste si le container est dans la frame voulue
Else ' Sinon (on est tout en bas de l'arborescence)
IsInFrame = False ' L'objet n'ets pas dans la frame voulue
End If
End Function

Avec cela, ca devrait passer je pense.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Salut,
Fait une fonction récursive qui parcours tout les conteneurs possible de la feuille en regardantsi l'objet y est contenu.
de cette maniere tu pourras obtenir une sorte de chemin pour accéder à ton objet.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
381
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
5 septembre 2010
3
Salut,
Tu n'a pas le choix a part de recréer une arborescence de tes controles ce qui revient à balayer à chaque fois tes conteneur

 Fiko ;-)

La reponse vous convient pensez > Accepter <
<hr />
Messages postés
381
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
5 septembre 2010
3
Un peu trop cours ;-)

 Fiko ;-)

La reponse vous convient pensez > Accepter <
<hr />

 
Messages postés
18
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
13 mai 2008

Ouais, j'y ai pensé, mais le problème est que çà risque d'être long si je dois balayer les conteneurs à chaque fois...
Surtout qu'il faut arriver à monobjet.container.container.container.container.container = frame1

Pas très joli..

J'espérai vraiment un MonObjet is in frame1... snif...
Messages postés
18
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
13 mai 2008

En fait, c'est plus compliqué que çà

Il peut y avoir plusieurs index de frame1

Le premier qui trouve la solution à gagner !!!
Messages postés
18
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
13 mai 2008

Je crois que ca y est ...

' Function Récursive qui renvoie true si l'obejt est dans le conteneur, sinon false
Public Function bIsInContainer(ByVal poObjet As Object, ByVal poConteneur As Object) As Boolean
    On Error GoTo gestionerreur
   
        If poObjet.Container.hwnd = poConteneur.hwnd Then ' Si l'objet est dans la frame voulue
            bIsInContainer = True ' On renvoie True
        Else
            bIsInContainer = bIsInContainer(poObjet.Container, poConteneur)  ' On teste si le container est dans la frame voulue
        End If
        Exit Function
gestionerreur:
    bIsInContainer = False
End Function