Creation d'objet bouton dans un groupe de controle [Résolu]

Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 25 janv. 2007 à 13:33 - Dernière réponse : Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention
- 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
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 25 janv. 2007 à 14:58
3
Merci
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de jrivet
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 25 janv. 2007 à 13:38
0
Merci
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
Commenter la réponse de jrivet
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 25 janv. 2007 à 13:42
0
Merci
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
Commenter la réponse de Teclis01
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 25 janv. 2007 à 13:55
0
Merci
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 #
Commenter la réponse de cs_casy
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 25 janv. 2007 à 13:56
0
Merci
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
Commenter la réponse de Teclis01
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 25 janv. 2007 à 14:00
0
Merci
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
Commenter la réponse de Teclis01
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 25 janv. 2007 à 14:01
0
Merci
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
Commenter la réponse de cs_Exploreur
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 25 janv. 2007 à 14:01
0
Merci
Pardon, post croisés


A+


Exploreur
Commenter la réponse de cs_Exploreur
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 25 janv. 2007 à 14:34
0
Merci
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
Commenter la réponse de Teclis01
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 25 janv. 2007 à 15:20
0
Merci
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
Commenter la réponse de Teclis01

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.