Comment créer dynamiquement des form?

[Résolu]
Signaler
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015
-
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
-
Salut,
Je cherche à pouvoir créer des form dynamiquement mais je n'y arrive pas. J'ai vu une source sur ce site pour créer des optionbutton mais pour les form il ne veut pas. Peut-être il faut créer un groupe de controle (pour que derrière le nom de la form à copier il y ait le "(0)").
Si quelqu'un a une solution... qu'il se manifeste

Merci d'avance

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/

6 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

beh moi je rajouterai une Form dans le Projet (donc Form2 par exemple)

Et quand tu as besoin,

Dim oform As New Form2

With oform
    .Top = 0
    .Left = 0
    .Width = 100
    .Height = 100
    .Show
End With

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
De rien,

et pour info, si ta Form principale est non modale, tu peux en afficher plusieurs en même temps (comme un tableau de variables) avec des indices.
La condition c'est qu'il doivent tous être non modal. Petit exemple :

Private Sub CommandButton1_Click()
Dim oform(1) As New Form2, i As Long

DoEvents
For i = 0 To 1
    With oform(i)
        .StartUpPosition = 0
        .Top = 0
        If i = 0 Then .Left = 0 Else .Left
= oform(i - 1).Left +
oform(i - 1).Width
        .Width = 100 * (i + 1)
        .Height = 100 * (i + 1)
        .Caption = "UserForm" & CStr(i + 2)
        .Show False
    End With
Next i

End Sub

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

Pour le StartUpPosition, c'est du VBA, je ne sais plus si en vb6 c'est la même propriété

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

Excellent, c'est exactement ça que je cherche à faire. Pourtant j'avais essayé avec la fonction "new" mais j'avai utilisé set au lieu de dim! En plus ce qui est bien c'est qu'apparemment tous les objets sont copiés dans la nouvelle form.
Encore merci

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

Par contre, je viens juste de penser à un truc. Comme la nouvelle form est une copie d'une existante, y'a-t-il un moyen de les différencier? Car dans le prog que je suis en train de faire, il y aura une fonction qui affichera des messages sur le bureau tant que l'utilisateur n'a pas fermé la fenêtre; un peu dans le style d'un post-it. Alors je me demandai comment dire à telle form d'afficher tel message. Il faut utiliser les index? (ex: form2(3).label1.caption="salut")

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

Ah ben oui, il suffit d'indexer oform!
Merci

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Bonjour,
@mortalino et pour info,
StartUpPosition éxiste aussi en VB6.