Objet contenu dans une frame ?

Résolu
G__D Messages postés 18 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 13 mai 2008 - 28 août 2007 à 15:00
G__D Messages postés 18 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 13 mai 2008 - 28 août 2007 à 16:53
  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

Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
28 août 2007 à 15:29
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.
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
28 août 2007 à 15:18
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
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
28 août 2007 à 15:19
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 />
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
28 août 2007 à 15:21
Un peu trop cours ;-)

 Fiko ;-)

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

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
G__D Messages postés 18 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 13 mai 2008
28 août 2007 à 15:31
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...
0
G__D Messages postés 18 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 13 mai 2008
28 août 2007 à 16:53
En fait, c'est plus compliqué que çà

Il peut y avoir plusieurs index de frame1

Le premier qui trouve la solution à gagner !!!
0
G__D Messages postés 18 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 13 mai 2008
28 août 2007 à 16:53
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
0
Rejoignez-nous