Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 2012
-
25 janv. 2007 à 13:33
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 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
A voir également:
Creation d'objet bouton dans un groupe de controle
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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)
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 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
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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 #
Vous n’avez pas trouvé la réponse que vous recherchez ?
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 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
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 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
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 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.
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 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
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 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