Chargement dynamique d'objets

cbnet Messages postés 176 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 7 mars 2005 - 7 févr. 2005 à 23:38
harryjc Messages postés 11 Date d'inscription vendredi 21 juin 2002 Statut Membre Dernière intervention 14 octobre 2005 - 22 mai 2005 à 09:19
Bonjour, j'ai un problème concernant le chargement d'objets avec l'instruction Load...


Explication : j'ai créé un objet PictureBox que j'ai appelé Containeur
avec son Index à 0. Cet objet sert à 'contenir' d'autres éléments (à
savoir, une image, des labels, une progressbar) tous indéxés de la même
façon à 0. Lorsque je charge un nouveau PictureBox comme ceci :


Load Containeur(Index) (avec l'index incrémenté bien sûr), le nouveau
conteneur est vide et ne contient pas les éléments de son original
(l'image, les labels...), donc je les charge également (Load machin...)
avec eux aussi des index incrémentés... Et voici le problème : les
nouveaux éléments du conteneur ne sont pas crées dans celui qui vient
d'être chargé mais dans l'original !!!



Ma question est donc :
quelqu'un connaît t'il un moyen pour charger un nouvel objet dans un
élément pouvant en contenir d'autres (que ce soit une PictureBox ou une
Frame... le principe est le même je suppose) ?


Merci d'avance.

5 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
8 févr. 2005 à 01:16
1ére solution:

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long


Private Sub Command2_Click()
Load Picture1(1)
Picture1(1).Move 3840, 540
Picture1(1).Visible = True


Load Command1(1)
Command1(1).Move 0, 0
SetParent Command1(1).hWnd, Picture1(1).hWnd
Command1(1).Visible = True
End Sub

Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
8 févr. 2005 à 01:17
2éme solution:

Private Sub Command2_Click()
Dim n As Integer
Dim Pict(2) As PictureBox
Dim Cmd1(2) As CommandButton

n = 1
Set Pict(n) = Controls.Add("VB.picturebox", "Pict1")
Pict(n).Move 3840, 540, 2835, 3255
Pict(n).Visible = True
Pict(n).SetFocus
Set Cmd1(n) = Controls.Add("VB.CommandButton", "Bouton1")
Set Cmd1(n).Container = Pict(n)
Cmd1(n).Move 0, 0, 1000, 500
Cmd1(n).Caption = "Bouton 1"
Cmd1(n).Visible = True
End Sub

Daniel
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 29
8 févr. 2005 à 08:44
Gobillot < pourquoi utilises-tu une api dans la solution 1 et Controls.add dasn la seconde ?
Tu peux faire un Load Command1(1) puis un Set Command1(1).container = picturebidule

Christophe R
0
cbnet Messages postés 176 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 7 mars 2005
8 févr. 2005 à 17:33
Merci a vous deux pour ces reponses. Elles me seront bien utiles
@+ et bonne prog !
0

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

Posez votre question
harryjc Messages postés 11 Date d'inscription vendredi 21 juin 2002 Statut Membre Dernière intervention 14 octobre 2005
22 mai 2005 à 09:19
Il me semble qu'il faut plutot passer par un usercontrol pour faire cet action.

Specifier une nouvelle propriete "Type" le type de control conteanant (Label, Bouton...) que tu veux afficher via cet usercontrol et lui envoyer les parametres graphiques du dit usercontrol (Largeur, Hauteur).
Aussi, il faut que tu te sers de TAG du usercontrol pour faire evoluer les données de tes control internes du usercoontrol

Cordialement,
.
0
Rejoignez-nous