Creation d'objet bouton dans un groupe de controle

Résolu
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 25 janv. 2007 à 13:33
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 25 janv. 2007 à 15:20
Bonjour,
J'ai un petit soucis ^^
L'utilisateur remplit un textbox avec un entier et appui sur un bouton Valider
Nous créons n textbox et n boutons.
Je voudrais que lors d'un appui sur un de ces n boutons lancer un algo ou le numero de bouton change le resultat
quelques chose de ce genre

/*C'est juste pour tester si le bouton indexé en 0 est appuyé*/
Private Sub Cmdi_Click(iIndex)
    if(iIndex==0)then
       Text2.text=0
    end if
End Sub

Voici le code utilisé pour creer un bouton:

Private Sub createTextBox(ByRef obj As Object, _
                ByVal name As String, ByVal top As Integer, _
                ByVal left As Integer, ByVal text As String, _
                ByVal height As Integer, ByVal width As Integer, _
                ByRef frm As Object)

    Set obj = Form2.Controls.Add("vb.textBox", name, frm)
    
    With obj
        .Visible = True
        .top = top
        .left = left
        .text = text
        .height = height
        .width = width
    End With
    col.Add obj
   
End Sub

Et voici comment je l'utilise:

Private Sub nValide_Click()
    iIndexN = TextN.text
    For iIndexText = 1 To iIndexN
        Call createCommandButton(objLbl, "Cmdi" & CStr(iIndexText), 300 * iIndexText, 150, "Dessine", 200, 700, Form2.Frame6)
    Next iIndexText
End Sub

alors ma question comment faire pour resoudre mon probleme? est ce que un groupe de controle le resoudrais? Comment faire pour mettre mon bouton en groupe de controle ?
Merci
--------------------------------------------------------------------------------------------------
         Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

10 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
25 janv. 2007 à 14:58
Salut,
Voici un petit projet test.
OUvre un nouveau projet ajoute y un TextBox et un CommandButton (ne les renomme pas on gagne du temps)

puis colle ce code appui sur F5 puis sur le bouton.
ensuite sur les autre bouton apparu et ensuite étudie le code.
Si tu as des problème de compréhension google, MSDN, Vbfrance

Option Explicit 

Private Sub Command1_Click(Index As Integer) 
    If Index =  0 Then 
        Call LoadObjects( CInt (Text1(0).Text)) 
    Else 
        Text1(Index).Text  = CStr(Index) 
    End If 

End Sub 

Private Sub LoadObjects(ByVal NumObjects As Integer) 
'Décharge les objets éventuellemnts chargés.
Dim i As Integer 
    For i =  Command1.UBound To 1 Step -1 
        'On décharge le bouton
        Call Unload(Command1(i)) 
        'On décharge le text box
        Call Unload(Text1(i)) 
    Next i 

    For i = 1 To NumObjects 
        Call LoadObject(Command1()) 
        Call LoadObject(Text1()) 
    Next 
End Sub 

Private Sub LoadObject(ByRef Obj As Object) 
    'On charge le bouton
    Call  Load (Obj(Obj.UBound + 1)) 
    'On définit ces propriétés
    With Obj(Obj.UBound) 
        .Left  = Obj(0).Left 
        .Top = Obj(Obj.UBound - 1).Top + Obj(Obj.UBound - 1).Height + 25 
        .Visible = True 
        'Si c'est un textbox on vide le contenu
        If TypeOf Obj(Obj.UBound) Is TextBox Then .Text = "" 
    End With 
End Sub 

Private Sub Form_Load() 
    Text1(0).Text = "3" 
End Sub 

note: la prochaine fois essaie de poster au bon endroit dans le forum. si tu es en VB6 tu n'as pas besoin de poste dans
[infomsg.aspx Thèmes] / [infomsgf_VB-NET-VB-2005_40.aspx VB.NET et VB 2005]
Plus tu seras précis plus les réponses aussi le seront.
@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
25 janv. 2007 à 13:38
Salut,
Premiere question de ma part, est tu réellement sur VB .NET ou bien sur VB6

Car je crois (que les experts me corrigent) que en .NET les groupe de contrôle n'existe plus.
Si tu es en VB6 rien de plus facile (en revanche .NET je pourrais pas te dire)

@+: Ju£i?n
Pensez: Réponse acceptée
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
25 janv. 2007 à 13:42
Oups oui petit oubli je suis en VB6

--------------------------------------------------------------------------------------------------
         Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
25 janv. 2007 à 13:55
Tout à fait Julien, en .Net, les groupes de controles n'existe plus de manière automatique. Il faut les recreer manuellement à l'aide des collections.

Mais vu le code de notre ami, il est en VB6

Teclis01, pour résoudre ton problème, effectivement les groupes de controles peuvent t'aider.

Modifie légèrement ta fonction de création des boutons. Il te faut passer l'index en argument.
Ensuite tu donne strictement le même nom à chacun de tes boutons et tu associe ton index à la propriété .Index du bouton que tu crée.

Ensuite dans la routine de gestion de l'évènement, tu n'auras plus qu'a récupérer l'index du bouton clicqué pour savoir lequel c'est

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0

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

Posez votre question
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
25 janv. 2007 à 13:56
je viens d essayer de modifier ainsi
Private Sub createTextBox(ByRef obj As Object, _
                ByVal name As String, ByVal top As Integer, _
                ByVal left As Integer, ByVal text As String, _
                ByVal height As Integer, ByVal width As Integer, _
                ByRef frm As ObjectByVal index As Integer)

    Set obj = Form2.Controls.Add("vb.textBox", name, frm)
    
    With obj
        .Visible = True
        .top = top
        .left = left
        .text = text
        .height = height
        .width = width
       .index= index
    End With
    col.Add obj
   
End Sub

Private Sub nValide_Click()
    iIndexN = TextN.text
    For iIndexText = 1 To iIndexN
   
    Call createCommandButton(objLbl, "Cmdi" & CStr(iIndexText), 300
* iIndexText, 150, "Dessine", 200, 700, Form2.Frame6,0)
    Next iIndexText
End Sub

Mais ça ne marche pas il me dit que index ne peut défini au moment de l execution :/
--------------------------------------------------------------------------------------------------
         Ilvaut mieux poser une question et passer pour bête que le rester toutesa vie
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
25 janv. 2007 à 14:00
Je viens d'enlever les noms "dynamique" et toujours la meme erreur :/

ca vient du fait que je "crée" le bouton avant de definir son index donc je suppose d'ici

Set obj = Form2.Controls.Add("vb.textBox", name, frm)
-----------------------------------------------------------------------------
    With obj
        .Visible = True
        .top = top
        .left = left
        .text = text
        .height = height
        .width = width
       .index= index
    End With
    col.Add obj

--------------------------------------------------------------------------------------------------
         Ilvaut mieux poser une question et passer pour bête que le rester toutesa vie
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
25 janv. 2007 à 14:01
Bonjour à tous,


Je suis pas expert, ton message d'erreur je pense que c'est un appel de ton index qui n'exite pas encore, car tu est entraint de créer jsutement ton objet.


A+


Eexploreur
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
25 janv. 2007 à 14:01
Pardon, post croisés


A+


Exploreur
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
25 janv. 2007 à 14:34
Du coup ma question devient:

Comment faire un objet commandbutton en definissant ses attributs dès l instanciation ?
Merci
--------------------------------------------------------------------------------------------------
         Ilvaut mieux poser une question et passer pour bête que le rester toutesa vie
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
25 janv. 2007 à 15:20
Merci et désolé j'ai vraiment pas fait gaffe ou j'ai posté :/

--------------------------------------------------------------------------------------------------
         Il vaut mieux poser une question et passer pour bête que le rester toute sa vie
0
Rejoignez-nous