cs_philcam
Messages postés132Date d'inscriptiondimanche 12 août 2001StatutMembreDernière intervention17 octobre 2008
-
23 août 2006 à 21:09
julien76150
Messages postés17Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention 7 mai 2009
-
16 nov. 2008 à 01:12
Salut à tous,
ça m'emmerde vraiment qu'il manque les groupes de contrôles en .net, est-ce que qqun a une soluce pour éviter des codes dans ce genre :
MerKi
Private
Sub btnCopie1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles btnCopie1.Click
If TabControl1.SelectedIndex = 0
Then Clipboard.SetDataObject(A1.Text)
If TabControl1.SelectedIndex = 1
Then Clipboard.SetDataObject(B1.Text)
If TabControl1.SelectedIndex = 2
Then Clipboard.SetDataObject(C1.Text)
If TabControl1.SelectedIndex = 3
Then Clipboard.SetDataObject(D1.Text)
If TabControl1.SelectedIndex = 4
Then Clipboard.SetDataObject(E1.Text)
End
Sub
Private
Sub btnCopie2_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles btnCopie2.Click
If TabControl1.SelectedIndex = 0
Then Clipboard.SetDataObject(A2.Text)
If TabControl1.SelectedIndex = 1
Then Clipboard.SetDataObject(B2.Text)
If TabControl1.SelectedIndex = 2
Then Clipboard.SetDataObject(C2.Text)
If TabControl1.SelectedIndex = 3
Then Clipboard.SetDataObject(D2.Text)
If TabControl1.SelectedIndex = 4
Then Clipboard.SetDataObject(E2.Text)
End
Sub
Private
Sub btnCopie3_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles btnCopie3.Click
If TabControl1.SelectedIndex = 0
Then Clipboard.SetDataObject(A3.Text)
If TabControl1.SelectedIndex = 1
Then Clipboard.SetDataObject(B3.Text)
If TabControl1.SelectedIndex = 2
Then Clipboard.SetDataObject(C3.Text)
If TabControl1.SelectedIndex = 3
Then Clipboard.SetDataObject(D3.Text)
If TabControl1.SelectedIndex = 4
Then Clipboard.SetDataObject(E3.Text)
End
Sub
Private
Sub btnCopie4_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles btnCopie4.Click
If TabControl1.SelectedIndex = 0
Then Clipboard.SetDataObject(A4.Text)
If TabControl1.SelectedIndex = 1
Then Clipboard.SetDataObject(B4.Text)
If TabControl1.SelectedIndex = 2
Then Clipboard.SetDataObject(C4.Text)
If TabControl1.SelectedIndex = 3
Then Clipboard.SetDataObject(D4.Text)
If TabControl1.SelectedIndex = 4
Then Clipboard.SetDataObject(E4.Text)
End
Sub
Private
Sub btnCopie5_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles btnCopie5.Click
If TabControl1.SelectedIndex = 0
Then Clipboard.SetDataObject(A5.Text)
If TabControl1.SelectedIndex = 1
Then Clipboard.SetDataObject(B5.Text)
If TabControl1.SelectedIndex = 2
Then Clipboard.SetDataObject(C5.Text)
If TabControl1.SelectedIndex = 3
Then Clipboard.SetDataObject(D5.Text)
If TabControl1.SelectedIndex = 4
Then Clipboard.SetDataObject(E5.Text)
End
Sub
Private
Sub btnCopie6_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles btnCopie6.Click
If TabControl1.SelectedIndex = 0
Then Clipboard.SetDataObject(A6.Text)
If TabControl1.SelectedIndex = 1
Then Clipboard.SetDataObject(B6.Text)
If TabControl1.SelectedIndex = 2
Then Clipboard.SetDataObject(C6.Text)
If TabControl1.SelectedIndex = 3
Then Clipboard.SetDataObject(D6.Text)
If TabControl1.SelectedIndex = 4
Then Clipboard.SetDataObject(E6.Text)
End
Sub
[size=1]La dictature c'est ferme ta gueule, la démocratie c'est cause toujours... (Woody Allen)/size=1
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 23 août 2006 à 21:33
Salut !
J'ai eu le meme problème pendant longtemps
Vas dans ta toolbox, clic-droit, chose items
La tu va trouver par exemple ButtonArray, ou CheckBoxArray, qui feront ton bonheur je pense... Ils auraient bien fait de faire un truc pour qu'on les trouve plus facilement qd meme...
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 23 août 2006 à 21:51
Tu peux toujours faire des collections.
Les groupes de controles existent toujours en .net, sauf qu'ils ne sont plus automatiques comme en vb6, il faut se les faire à la main avec des collections.
---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 23 août 2006 à 23:24
Heu je suis en train de me rendre compte que je me suis sans doute un peu avancé... A mon avis, je cherchais un solution à ce problème, j'ai cru l'avoir trouvé (ben oui avec un nom pareil ButtonArray) et puis en fait je suis arrivé à rien et j'ai laissé tombé...
Commence plutot par les collection, ca me semble plus facile et plus utilisé.
Moi j'utiliserais soit une List (of Button) soit Button.ControlCollection mais à mon avis c'est fort semblable, à toi de voir...
Là je vais aller dormir, mais demain si tu veux je te fais un code pour gérer les évènements...
Julien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_philcam
Messages postés132Date d'inscriptiondimanche 12 août 2001StatutMembreDernière intervention17 octobre 2008 23 août 2006 à 23:35
non te fatigue pas je vais bien trouver qquechose, je faisais du vb6.0 depuis 3-4 ans et là je me mets au .net et n'étant pas développeur pro, je tatonne, comme pas mal de monde ici,
j'ai trouvé une page pas mal sur le sujet (mais y'a de quoi lire)
julien76150
Messages postés17Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention 7 mai 2009 12 nov. 2008 à 16:58
Bonjour,
J'aimerais utiliser des ButtonArray et CheckBoxArray dans mon application mais je bloque un peu.
Comme décrit plus haut, après avoir ajouté la Bibliothèque Microsoft.VisualBasic.Compatibility dans les références et en faisant un clic droit dans la boîte à outils, j'ai obtenu les fonctions ButtonArray et CheckBox Array.
J'ai un exemple dans lequel il y a un paramêtre "index" dans la rubrique Divers des propriétés des Boutons mais je ne retrouve pas cette propriété dans mon projets.
Pourriez vous m'aider ???
Merci d'avance.
Passion:
Projet d'automatisation d'une maquette ferroviaire à l'aide d'une carte d'interface Velleman K8000.
cs_philcam
Messages postés132Date d'inscriptiondimanche 12 août 2001StatutMembreDernière intervention17 octobre 2008 12 nov. 2008 à 20:35
Salut,
j'ai pas compris ta question à 100% pourtant elle parait claire mais je suis un peu fatigué ce soir , tout ce que je peux te dire c'est que les lignes de codes que j'avais mis tout en haut, sont aujourd'hui remplacées par
Private Sub btnCopie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCopie0.Click, btnCopie1.Click, btnCopie2.Click, btnCopie3.Click, btnCopie4.Click, btnCopie5.Click
Dim ctlSender As Control
Dim IndexBouton As Integer
ctlSender = CType(sender, Control)
IndexBouton = CInt(Mid(ctlSender.Name, 9, 1))
If TabControl1.SelectedIndex = 0 Then Clipboard.SetDataObject(Panel1.Controls(IndexBouton).Text)
If TabControl1.SelectedIndex = 1 Then Clipboard.SetDataObject(Panel2.Controls(IndexBouton).Text)
If TabControl1.SelectedIndex = 2 Then Clipboard.SetDataObject(Panel3.Controls(IndexBouton).Text)
If TabControl1.SelectedIndex = 3 Then Clipboard.SetDataObject(Panel4.Controls(IndexBouton).Text)
If TabControl1.SelectedIndex = 4 Then Clipboard.SetDataObject(Panel5.Controls(IndexBouton).Text)
End Sub
j'ai du ré-ouvrir ce projet rien que pour toi car je me rappelais même pas de la méthode.
y'en a peut être d'autres qui sauront te répondre
sinon pour l'automatisation, j'avais aussi envie de m'y mettre, d'autant que maintenant on trouve des interfaces programmables en .net (phidget.com), mais chaque produit est à un prix exorbitant ce qui a mis fin à mes fantasmes de robots, oui je suis pas très persévérant
julien76150
Messages postés17Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention 7 mai 2009 13 nov. 2008 à 17:40
Bonjour,
Merci pour le lien, ce site est vraiement intéressant et bien fait pour les novices.
Merci aussi pour l'exemple de code mais il me semble un peu compliqué.
Voici ce que j'ai récupéré dans ma source "Exemple":
Private
Sub Check1_CheckStateChanged(
ByVal eventSender
As System.Object,
ByVal eventArgs
As System.EventArgs)
Handles Check1.CheckStateChanged
Dim Index
As
Short = Check1.GetIndex(eventSender)
If Check1(Index).CheckState = 1
Then
SetIOchannel((Index + 1 + card_nr * 16))
Else
ClearIOchannel((Index + 1 + card_nr * 16))
End
If
End
SubCela me parrait beaucoup plus simple pour affecter une même fonction à une vingtaine de boutons.
D'après ce que j'ai pigé, le CheckBoxArray reçoit les infos de tous les boutons.
La seule chose que je ne parviens pas à réaliser, c'est définir l'index de chaque bouton dans la propriété "Index sur" qui n'apparaît même pas dans la liste des propriétés des boutons.
cs_philcam
Messages postés132Date d'inscriptiondimanche 12 août 2001StatutMembreDernière intervention17 octobre 2008 13 nov. 2008 à 19:49
en fait je viens d'essayer de re-comprendre ce bout de code et je crois qu'il y a une solution interressante quand même, même si elle n'est pas très académique
Dim ctlSender As Control
IndexBouton sera le numéro qu'il y a à la fin du nom de ton bouton bouton1, bouton2 etc...
Dim IndexBouton As Integer
ctlSender = CType(sender, Control)
et là dans ce cas il prend le 9ème caractère pour connaître le numéro de bouton
IndexBouton = CInt(Mid(ctlSender.Name, 9 , 1))
mais si le nom est bouton1 bouton2 etc... c'est le caractère 7 qui donnera l'index, donc :
IndexBouton = CInt(Mid(ctlSender.Name, 7, 1))
et si il y a plus de 9 boutons ont mettra un truc du genre :
IndexBouton = CInt(Mid(ctlSender.Name, ,2 et les boutons devront s'appeller bouton01, bouton02, ......, bouton54 etc...
julien76150
Messages postés17Date d'inscriptionsamedi 14 juin 2008StatutMembreDernière intervention 7 mai 2009 16 nov. 2008 à 01:12
Bonjour à tous,
Et bien j'me disais que pour y arriver, il fallait persévérer.
Cela fait quelques jour que je me galère à apprendre la programmation VB et je commence à trouver cela sympa. Excusez moi si les termes ne sont pas exact mais je n'y connais pas grand chose.
Je vous rappelle un peu mon objectif: Je voulais créer une liste de boutons (ButtonArray) car tous ont la même "Fonction"...
Voici la démarche:
1°) Créer les boutons dans le concepteur de vue
_Button1_1
_Button1_2
_Button1_3
...
2°)Dans Projet/Ajouter une Référence, sélectionner:
Microsoft.VisualBasic.Compatibility.VB6
3°)Personnaliser la Boîte à outils
(Clic droit sur Tous les Windows Form/Choisir les éléments)
Puis cocher ButtonArray
4°) Faire glisser un ButtonArray dans le Form.
ButtonArray1
5°) Ajouter le code suivant dans le code généré automatiquement par le concepteur:
'_Button1_1
...
Me.ButtonArray1.SetIndex(Me._Button1_1, CType(1, Short))
...
'_Button1_2
...
Me.ButtonArray1.SetIndex(Me._Button1_2, CType(2, Short))
...
'_Button1_3
...
Me.ButtonArray1.SetIndex(Me._Button1_3, CType(3, Short))
...
6°) La déclaration est maintenant terminée, on voit apparaitre dans les proprétés des Boutons un numéro correspondant à l'"Index" du bouton dans la table. Il n'y a plus qu'à traîter les données de la liste de boutons.
Exemples:
Private
Sub
Button1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles ButtonArray1.Click
Dim Index AsShort = ButtonArray1.GetIndex(eventSender)
If M_Pres_St_(Index) = TrueThen
M_Pres_St_(Index) = False
ClearIOchannel(Index)
Else
M_Pres_St_(Index) = True
SetIOchannel(Index)
EndIf
EndSub
-----------------------------------------------------------------------------Private
Sub CheckBox_Check(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles CheckBoxArray1.CheckedChanged
...
EndSub
-----------------------------------------------------------------------------
For i = 1 To 7
LabelArray1(i).Text = "MANU / AUTO"
LabelArray2(i).Text = "Temps d'arrêt"
LabelArray3(i).Text = "Inversion Sens"
TextBoxArray1(i).Text = "00:00:30"
GroupBoxArray1(i).Text = i
Next
Ca semble tellement pratique, qu'on aurait presque envi de faire tout le programme de cette façon ...
@+
Julien
Passion:
Projet d'automatisation d'une maquette ferroviaire à l'aide d'une carte d'interface Velleman K8000.