Position d'un composant dans un Form

Position d'un composant dans un Form - VB/VBA/VBS - Programmation

Marsh Posté le 15-07-2009 à 14:38:50    

Bonjour,
 
J'ai un petit problème en VBA avec un Form où je veux placer dynamiquement un composant (combobox pour l'exemple) par rapport à son conteneur (frame on va dire).
Donc quand je crée une combobox dans la frame pas de problème car la position (0,0) est le zéro de la frame. Le problème est que je dois créé la combobox en dehors de la frame et du coup le (0,0) est celui du Form. Là on pourrait penser qu'il suffit de rajouter aux coordonnées la position de la frame dans le Form mais le problème c'est qu'il peut y avoir éventuellement un composant (voire peut-être plusieurs dans le futur) dans le form qui contient la frame mais je ne connais pas ce composant et il me faut une solution dynamique.  
Comment faire pour atteindre le (0,0) de la frame ?
 
Merci d'avance.

Reply

Marsh Posté le 15-07-2009 à 14:38:50   

Reply

Marsh Posté le 16-07-2009 à 08:17:49    

Personne ne sait ou bien mon problème n'est pas clair ?

Reply

Marsh Posté le 22-07-2009 à 17:15:37    

Bonjour
 
Comprends pas le souci...


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 22-07-2009 à 17:23:06    

Finalement j'ai pu réussir mais c'est moins dynamique que prévu.
 
En fait le souci c'est que le référentiel pour les coordonnées des composants est le composant parent. Donc pour connaitre la position d'un composant inclus dans plusieurs composants en cascade il est impossible de savoir sa position absolue sans connaitre la position des composants intermédiaires.

Reply

Marsh Posté le 22-07-2009 à 17:24:46    

Et un .Parent ?
Tout depend de quel type de form tu parles...


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 22-07-2009 à 17:54:11    

C'est un UserForm.
Le Parent ça va pas car déjà il m'a semblé que pour un composant je n'avais pas cette propriété et surtout qu'il peut y avoir des parents, grand-parents...etc sans que je sache leur nombre.

Reply

Marsh Posté le 22-07-2009 à 18:01:41    

Comment peux tu ne pas connaitre le nombre ?
C'est bien toi qui les créé non ?
 
Et le .Parent fonctionne bien dans un UserForm
 
Imaginons un Bouton CommandButton1 dans un UserForm UserForm1
 

Code :
  1. Private Sub CommandButton1_Click()
  2.     Set MonCtrl = Controls.Item(ControlsIndex)
  3.     Set CtrlParent = MonCtrl.Parent
  4.     MsgBox CtrlParent.Name
  5. End Sub


 
Ca te renvoit UserForm1, et ainsi de suite. Rien ne t'empeche de faire d'ailleurs une boucle a la con (genre jusqu'a 30 niveaux) et de recuperer le dernier niveau jusqu'a erreur...

Message cité 1 fois
Message édité par SuppotDeSaTante le 22-07-2009 à 18:02:34

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 22-07-2009 à 18:07:43    

SuppotDeSaTante a écrit :

Comment peux tu ne pas connaitre le nombre ?
C'est bien toi qui les créé non ?


 
En fait je fait une solution qui sera incluse dans le programme d'autres personnes donc ça doit marcher dans tous les cas.
 
Mais merci pour l'astuce du .Parent. :jap:  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed