METTRE UNE VALEUR À L'ENSEMBLE DES CONTROLES D'UN MÊME TYPE

radcur Messages postés 282 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 15 août 2012 - 12 sept. 2008 à 21:43
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 15 oct. 2008 à 19:05
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/47925-mettre-une-valeur-a-l-ensemble-des-controles-d-un-meme-type

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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és 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 18 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 19 mars 2014
13 oct. 2008 à 22:40
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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és 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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és 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
17 sept. 2008 à 15:19
Bonjour

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
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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és 53 Date d'inscription dimanche 20 juillet 2008 Statut Membre Dernière intervention 10 octobre 2015
14 sept. 2008 à 03:52
prendre de ne pas ouvrire d'erreur dsl!!!
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 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és 301 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 17 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és 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
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és 282 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 15 août 2012 2
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.
Rejoignez-nous