us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 15 oct. 2008 à 19:05
Bonsoir à tous,
Effectivement, l'adresse est bonne, et il semble qu'on puisse adapter un codage natif en VB2008, avec Control.ControlCollection. Dès que j'aurai du temps, j'approndirai la question. Merci, donc pour cette piste, que justement je cherchais...
Amicalement,
Us.
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 14 oct. 2008 à 14:39
Oui trés bien.
Tout a été dit / écrit sur ce sujet.
Chacun fait fait fait ...
Yop Yop
Afyn - Navedac
cs_medkarim
Messages postés18Date d'inscriptionmercredi 21 juillet 2004StatutMembreDernière intervention19 mars 2014 13 oct. 2008 à 22:40
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 21 sept. 2008 à 15:50
Bonjour Afyn,
Tu ne vois pas bien... hum... faudrait prendre des lunettes, alors ?... -:);
Ce que tu proposes est struturellemet identique à mon code, mais n'as pas la même généralité. En somme, c'est une version plus spécifique... Bon, pourquoi pas (d'ailleurs, j'avais commencé par là)... mais il faudrait reprendre sans le cesse le code si on veut changer un paramètre, ou si on veut utiliser un autre objet. Ma proposition reste donc plus simple... Si tu voulais simplifier et généraliser ton code, tu obtiendrais vraisemblablement un codage très proche de ma proposition, donc... Seul hic, c'est que CALLBYNAME n'est pas natif, et GETTYPE remplace que partiellement cette dernière fonction... En terme de performance, c'est pas un enjeu ici.
A+
Amicalement,
Us.
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 20 sept. 2008 à 17:40
Bonjour
Je comprend pas bien ce que tu veux faire avec ton code.
Voilà une modif sur la première ligne de ton code par exemple :
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
'TypeControl(GroupBox1, "checkbox", "checked") = True
For Each Ctl As Control In GroupBox1.Controls
If Ctl.GetType.Name = "checkbox" Then
Dim Cbx As CheckBox = Ctl
Cbx.Checked = True
Cbx = Nothing
End If
Next
End Sub
Qui fonctionne et s'exécutera plus vite que ton appel ...
Mais j'avoue ne pas saisir l'utilité du code.
Peut être est ce une fausse route ?
Pourquoi ne pas grouper les controles de mëme nature ensemble si tu veux
pouvoir modifier les propriétés du groupe ?
Je suis désolé de ne pas pouvoir t'aider.
Bonne prog
Afyn . Navedac
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 19 sept. 2008 à 23:37
Bonsoir Afyn,
J'ai regardé ta source. IL y a une différnce essentielle entre nos deux codes. Ce que tu proposes est, certes, une possibilité d'utilisable dans certains cas, mais a surtout besoin d'être créé dynamiquement.
Le problème que je propose de résoudre est tout de même légèrement différent, et je doute qu'il puisse être régler avec autant de souplesse en utilisant "controls.Add" ...
En effet, imagines que tu sois en train de créer une feuille (form) avec différents éléments (textbox, checbox, ou autres), et que tu veux régler certaines propriétés parmi les éléments... comment faire ?
De plus, comme tu es toujours en création, tu rajoutes, retire ou déplace des éléments... Comment faire pour ne pas avoir à retoucher au code ?
Je ne vois pas de façon plus souple que ma proposition, puisse qu'avec une seule ligne de code, on régle les propriétés d'un même type d'élément quel que soit le nombre, sans devoir citer les références explicites des éléments (ce qui est possible comme alternative, mais lourde à mettre en oeuvre.)
Si tu veux me convaincre, essayes donc de faire un petit projet, parfaitement identique (dans son principe) à mon mini-projet exemple, exposé ici... On pourra en faire une comparaison intéressante.
Amicalement,
Us.
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 17 sept. 2008 à 15:19
Si ce n'est pas suffisamment explicite, je peux refaire
un petit projet.
A ton service
Afyn - Navedac
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 16 sept. 2008 à 21:57
Bonsoir,
KML404, tu as perdu ta grammaire ? -);
MiniZanZan, j'ai regardé tes progs, mais ce n'est pas directement en rapport avec le sujet... même s'il y a qlq points communs...
AFYN > oui, il existe d'autres façons de faire, et je ne les connais pas tous... Mon but, n'est pas non plus de programmer la même chose de mille et une façons différentes, mais plutôt de faire le plus simple... Néanmoins, aurais-tu un exemple simple pour les deux méthodes alternatives que tu proposes ? Merci d'avance.
Amicalement,
Us.
kml404
Messages postés53Date d'inscriptiondimanche 20 juillet 2008StatutMembreDernière intervention10 octobre 2015 14 sept. 2008 à 03:52
prendre de ne pas ouvrire d'erreur dsl!!!
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 13 sept. 2008 à 16:52
Il faut tout simplement regrouper les contrôles dans un objet parent.
(GroupBox par exemple)
Ou alors créer une collection (List ou Listof ...)contenant les références des objets que l'on veux indexer.
Afyn-Navedac
Le savoir faire des cancres
mimiZanzan
Messages postés301Date d'inscriptionlundi 27 février 2006StatutMembreDernière intervention17 décembre 2017 13 sept. 2008 à 02:00
Si je peux me permettre, j'ai déposé plusieurs sources sur ce site pour pallier au manque de groupe de contrôles sous VBA, en utilisant une classe:
*"Création de contrôles dynamiques"
*"Gestion Groupe de textboxs dynamiques"
*"Gestion userform avec groupe de boutons dynamiques"
Je pense que çà peut être appliqué à VB2008, mais je ne le connais pas encore assez pour le certifier (je reste pour l'instant à VB6....)
En espérant vous être utile.
Cordialement.
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 12 sept. 2008 à 21:59
Bonsoir,
J'avoue que je ne suis pas penché sur les événements. Mais, ta remarque est très bonne... il faudrait voir si on peut exploiter plus "sender" pour raccourcir le codage...
Sinon, il existe (évidemment) d'autre façon de faire. Gillardg propose ceci :
=
Dim tb() As TextBox = {TextBox0, TextBox1, TextBox2, TextBox3, TextBox4, TextBox5,
TextBox6, TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12}
For x = 0 To 12
tb(x).text = String.Empty
Next
=
Mais voilà, c'est long et fastidieux à coder... Sans compter, que dès qu'on change le Nom du control pour qu'il soit plus explicite, on doit retoucher aussi le code... un peu lourd, donc. Ce n'est pas le cas, dans ma proposition.
=
Par ailleurs, sur internet, j'ai vu encore une autre façon de faire pour obtenir une notation similaire à VB6... mais un peu trop sophistiqué à mon sens...
Amicalement,
Us.
radcur
Messages postés282Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention15 août 20122 12 sept. 2008 à 21:43
salut
effectivement, les collections de controles ont disparues apres VB6. Pour la gestion des évènements sur des contrôles de même types, j'ai vu qu'on pouvait mettre plusieurs "trucs" après le handles (exemple private sub text1_click( sender... , e as ...) handles text1.click, text2.click, text3.click) et utiliser l'argument sender pour déterminer le controle source.
15 oct. 2008 à 19:05
Effectivement, l'adresse est bonne, et il semble qu'on puisse adapter un codage natif en VB2008, avec Control.ControlCollection. Dès que j'aurai du temps, j'approndirai la question. Merci, donc pour cette piste, que justement je cherchais...
Amicalement,
Us.
14 oct. 2008 à 14:39
Tout a été dit / écrit sur ce sujet.
Chacun fait fait fait ...
Yop Yop
Afyn - Navedac
13 oct. 2008 à 22:40
http://msdn.microsoft.com/fr-fr/library/kxt4418a.aspx
21 sept. 2008 à 15:50
Tu ne vois pas bien... hum... faudrait prendre des lunettes, alors ?... -:);
Ce que tu proposes est struturellemet identique à mon code, mais n'as pas la même généralité. En somme, c'est une version plus spécifique... Bon, pourquoi pas (d'ailleurs, j'avais commencé par là)... mais il faudrait reprendre sans le cesse le code si on veut changer un paramètre, ou si on veut utiliser un autre objet. Ma proposition reste donc plus simple... Si tu voulais simplifier et généraliser ton code, tu obtiendrais vraisemblablement un codage très proche de ma proposition, donc... Seul hic, c'est que CALLBYNAME n'est pas natif, et GETTYPE remplace que partiellement cette dernière fonction... En terme de performance, c'est pas un enjeu ici.
A+
Amicalement,
Us.
20 sept. 2008 à 17:40
Je comprend pas bien ce que tu veux faire avec ton code.
Voilà une modif sur la première ligne de ton code par exemple :
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
'TypeControl(GroupBox1, "checkbox", "checked") = True
For Each Ctl As Control In GroupBox1.Controls
If Ctl.GetType.Name = "checkbox" Then
Dim Cbx As CheckBox = Ctl
Cbx.Checked = True
Cbx = Nothing
End If
Next
End Sub
Qui fonctionne et s'exécutera plus vite que ton appel ...
Mais j'avoue ne pas saisir l'utilité du code.
Peut être est ce une fausse route ?
Pourquoi ne pas grouper les controles de mëme nature ensemble si tu veux
pouvoir modifier les propriétés du groupe ?
Je suis désolé de ne pas pouvoir t'aider.
Bonne prog
Afyn . Navedac
19 sept. 2008 à 23:37
J'ai regardé ta source. IL y a une différnce essentielle entre nos deux codes. Ce que tu proposes est, certes, une possibilité d'utilisable dans certains cas, mais a surtout besoin d'être créé dynamiquement.
Le problème que je propose de résoudre est tout de même légèrement différent, et je doute qu'il puisse être régler avec autant de souplesse en utilisant "controls.Add" ...
En effet, imagines que tu sois en train de créer une feuille (form) avec différents éléments (textbox, checbox, ou autres), et que tu veux régler certaines propriétés parmi les éléments... comment faire ?
De plus, comme tu es toujours en création, tu rajoutes, retire ou déplace des éléments... Comment faire pour ne pas avoir à retoucher au code ?
Je ne vois pas de façon plus souple que ma proposition, puisse qu'avec une seule ligne de code, on régle les propriétés d'un même type d'élément quel que soit le nombre, sans devoir citer les références explicites des éléments (ce qui est possible comme alternative, mais lourde à mettre en oeuvre.)
Si tu veux me convaincre, essayes donc de faire un petit projet, parfaitement identique (dans son principe) à mon mini-projet exemple, exposé ici... On pourra en faire une comparaison intéressante.
Amicalement,
Us.
17 sept. 2008 à 15:19
Est ce que tu as regardé par là :
http://www.vbfrance.com/codes/GROUPE-CONTROLES-VB6-VISUAL-BASIC-2005-EXPRESS-EDITION_36228.aspx
Si ce n'est pas suffisamment explicite, je peux refaire
un petit projet.
A ton service
Afyn - Navedac
16 sept. 2008 à 21:57
KML404, tu as perdu ta grammaire ? -);
MiniZanZan, j'ai regardé tes progs, mais ce n'est pas directement en rapport avec le sujet... même s'il y a qlq points communs...
AFYN > oui, il existe d'autres façons de faire, et je ne les connais pas tous... Mon but, n'est pas non plus de programmer la même chose de mille et une façons différentes, mais plutôt de faire le plus simple... Néanmoins, aurais-tu un exemple simple pour les deux méthodes alternatives que tu proposes ? Merci d'avance.
Amicalement,
Us.
14 sept. 2008 à 03:52
13 sept. 2008 à 16:52
(GroupBox par exemple)
Ou alors créer une collection (List ou Listof ...)contenant les références des objets que l'on veux indexer.
Afyn-Navedac
Le savoir faire des cancres
13 sept. 2008 à 02:00
*"Création de contrôles dynamiques"
*"Gestion Groupe de textboxs dynamiques"
*"Gestion userform avec groupe de boutons dynamiques"
Je pense que çà peut être appliqué à VB2008, mais je ne le connais pas encore assez pour le certifier (je reste pour l'instant à VB6....)
En espérant vous être utile.
Cordialement.
12 sept. 2008 à 21:59
J'avoue que je ne suis pas penché sur les événements. Mais, ta remarque est très bonne... il faudrait voir si on peut exploiter plus "sender" pour raccourcir le codage...
Sinon, il existe (évidemment) d'autre façon de faire. Gillardg propose ceci :
=
Dim tb() As TextBox = {TextBox0, TextBox1, TextBox2, TextBox3, TextBox4, TextBox5,
TextBox6, TextBox7, TextBox8, TextBox9, TextBox10, TextBox11, TextBox12}
For x = 0 To 12
tb(x).text = String.Empty
Next
=
Mais voilà, c'est long et fastidieux à coder... Sans compter, que dès qu'on change le Nom du control pour qu'il soit plus explicite, on doit retoucher aussi le code... un peu lourd, donc. Ce n'est pas le cas, dans ma proposition.
=
Par ailleurs, sur internet, j'ai vu encore une autre façon de faire pour obtenir une notation similaire à VB6... mais un peu trop sophistiqué à mon sens...
Amicalement,
Us.
12 sept. 2008 à 21:43
effectivement, les collections de controles ont disparues apres VB6. Pour la gestion des évènements sur des contrôles de même types, j'ai vu qu'on pouvait mettre plusieurs "trucs" après le handles (exemple private sub text1_click( sender... , e as ...) handles text1.click, text2.click, text3.click) et utiliser l'argument sender pour déterminer le controle source.