OVH Cloud OVH Cloud

Variables composants

5 réponses
Avatar
Lucio
Bonjour,

Je sais que j'ai posté un message semblable il y a peu mais je tente de le
refaire en étant plus clair

Je déclare des vatiables en tant que composants
Exemple
dim MonCheck as windows.forms.checkbox
dim MonRB as windows.forms.radiobutton

avec une boucle je repère un composant correspondant
MaFeuille.controls.index(1) par exemple
Je voudrais que la variable MonCheck corresponde au composant
MaFeuille.controls.index(1). Et que quand je fais MonCheck.Checked = true il
me coche le composant correspondant.

J'ai tenté
MonCheck = MaFeuille.controls.index(1)
MonCheck.Checked=true
Quand je visualise l'onglet automatique (espion de variables) mes variables
prenne les bonne valeur mais pas le composant

Le même problème se pose pour récupérer la valeur du composant.
Je passe par cette variables pour alimenter et lire car ma feuille contient
30 checkbox et 90 radiobutton (3 par check) donc je cherche à tout faire en
une seule fonction.

D'avance merci pour votre aide

5 réponses

Avatar
Stephane TUET
Salut

Je ne sais pas si j'ai bien compris ton problème, mais je tente une réponse
:-)
Au vu de ton précédent post et de ta boucle, il me semble que tu veux
uniquement checker tes checkbox en faisant une boucle sur tes composants...
Mais je ne comprends l'intéret de vouloir passer par une variable
intermédiaire (MonCheck)... Tu pourrais simplement caster ton contrôle et
utiliser ses méthodes directement :

for i = 0 to mafeuille.controls.count - 1
if marequete.hasrow = true
CType(mafeuille.controls(i), CheckBox).Checked = (mavaleur =
"OUI")
end if
next


Voilà, j'espère ne pas être à côté de ton problème, sinon désolé :-)

@+
Steph


"Lucio" a écrit dans le message de news:

Bonjour,

Je sais que j'ai posté un message semblable il y a peu mais je tente de le
refaire en étant plus clair

Je déclare des vatiables en tant que composants
Exemple
dim MonCheck as windows.forms.checkbox
dim MonRB as windows.forms.radiobutton

avec une boucle je repère un composant correspondant
MaFeuille.controls.index(1) par exemple
Je voudrais que la variable MonCheck corresponde au composant
MaFeuille.controls.index(1). Et que quand je fais MonCheck.Checked = true
il
me coche le composant correspondant.

J'ai tenté
MonCheck = MaFeuille.controls.index(1)
MonCheck.Checked=true
Quand je visualise l'onglet automatique (espion de variables) mes
variables
prenne les bonne valeur mais pas le composant

Le même problème se pose pour récupérer la valeur du composant.
Je passe par cette variables pour alimenter et lire car ma feuille
contient
30 checkbox et 90 radiobutton (3 par check) donc je cherche à tout faire
en
une seule fonction.

D'avance merci pour votre aide




Avatar
Lucio
Tu as exactement compris mon problème, je pense que la bonne voie est celle
ci mais toutefois quand je place cette ligne de code, il ne m'alimente pas le
composant correspondant.
Je pense que desormais que le problème viens du rafraichissement de la page
Le composant se trouve sur le troisieme onglet d'un tabcontrol qui lui même
se trouve sur la feuille.
J'ai tenté
mafeuille.tabcontrol1.tabpage(2).moncontrol(i).refresh
mafeuille.tabcontrol1.tabpage(2).refresh
mafeuille.tabcontrol1.refresh
mafeuille.refresh

mais rien n'y fait il ne s'alimente pas

A mon avis ce que tu m'as es la ligne qu'il me faut, il me reste juste à
trouver comment rafraichir

Merci pour ton aide

"Stephane TUET" a écrit :

Salut

Je ne sais pas si j'ai bien compris ton problème, mais je tente une réponse
:-)
Au vu de ton précédent post et de ta boucle, il me semble que tu veux
uniquement checker tes checkbox en faisant une boucle sur tes composants...
Mais je ne comprends l'intéret de vouloir passer par une variable
intermédiaire (MonCheck)... Tu pourrais simplement caster ton contrôle et
utiliser ses méthodes directement :

for i = 0 to mafeuille.controls.count - 1
if marequete.hasrow = true
CType(mafeuille.controls(i), CheckBox).Checked = (mavaleur =
"OUI")
end if
next


Voilà, j'espère ne pas être à côté de ton problème, sinon désolé :-)

@+
Steph




Avatar
Stephane TUET
Je crois que j'ai compris ton problème ! :-)

Tu veux réaliser une boucle sur tous les composants de ta fenêtre pour
trouver les checkbox, donc quelque chose du type :

for each c as control in me.controls
if typeof c is checkbox then
...
end if
next

Le problème avec cette boucle c'est que tu possèdes un objet TabControl, qui
possède des onglets, qui eux possèdent tes checkbox. Avec cette boucle tu
passes en revue uniquement les controls de premier niveau de ta fenêtre, il
faut donc faire un appel récursif de ta procédure pour passer en revue tous
tes composants, leur sous-composants, qui eux même ont des composants...
etc.

Tu devrais donc utiliser une procédure comme celle-ci :

public sub CheckRecursif(ByVal MonControl as Control)

for each c as control in MonControl.controls
if typeof c is checkbox then
...
elseif c.controls.count > 0 then
CheckRecursif(c)
end if
next

end sub


@+
Steph



"Lucio" a écrit dans le message de news:


Tu as exactement compris mon problème, je pense que la bonne voie est
celle
ci mais toutefois quand je place cette ligne de code, il ne m'alimente pas
le
composant correspondant.
Je pense que desormais que le problème viens du rafraichissement de la
page
Le composant se trouve sur le troisieme onglet d'un tabcontrol qui lui
même
se trouve sur la feuille.
J'ai tenté
mafeuille.tabcontrol1.tabpage(2).moncontrol(i).refresh
mafeuille.tabcontrol1.tabpage(2).refresh
mafeuille.tabcontrol1.refresh
mafeuille.refresh

mais rien n'y fait il ne s'alimente pas

A mon avis ce que tu m'as es la ligne qu'il me faut, il me reste juste à
trouver comment rafraichir

Merci pour ton aide

"Stephane TUET" a écrit :

Salut

Je ne sais pas si j'ai bien compris ton problème, mais je tente une
réponse
:-)
Au vu de ton précédent post et de ta boucle, il me semble que tu veux
uniquement checker tes checkbox en faisant une boucle sur tes
composants...
Mais je ne comprends l'intéret de vouloir passer par une variable
intermédiaire (MonCheck)... Tu pourrais simplement caster ton contrôle et
utiliser ses méthodes directement :

for i = 0 to mafeuille.controls.count - 1
if marequete.hasrow = true
CType(mafeuille.controls(i), CheckBox).Checked = (mavaleur >> "OUI")
end if
next


Voilà, j'espère ne pas être à côté de ton problème, sinon désolé :-)

@+
Steph






Avatar
Lucio
Oui je savais pour l'histoire de l'onglet et que d'apres mon code je
parcourais que la feuille. Mais j'avais mis comme ça pour simplifier.
Par contre j'ai trouvé la solution
Je mets le code pour info :

Dim Xcontrol as windows.forms.control
Dim XCheck As Windows.Forms.CheckBox


For Each XControl In Me.TabPage3.Controls

'lp - Si il s'agit d'un checkbox contenu dans la table T_COMPOSANT
'''''LReq_OUI_NON = "SELECT * FROM T_COMPOSANT " & _
'''''" WHERE C_CHECK = '" &
XFMain.TabPage3.Controls(Lindex).Name & "'"
LReq_OUI_NON = "SELECT * FROM T_COMPOSANT " & _
" WHERE C_CHECK = '" & XControl.Name & "'"
RSource2 = New Odbc.OdbcCommand(LReq_OUI_NON, P_Connect2)
RSet2 = RSource2.ExecuteReader

If RSet2.HasRows = True Then
'lp - RSet(RSet2("C_CHAMP")) renvoit la valeur du champ
correspondant
If IsDBNull(RSet(RSet2("C_CHAMP"))) = True Then 'lp - Null
'lp - On decoche le checkbox
XCheck = DirectCast(XControl, Windows.Forms.CheckBox)
XCheck.Checked = False
Else

"Lucio" a écrit :

Bonjour,

Je sais que j'ai posté un message semblable il y a peu mais je tente de le
refaire en étant plus clair

Je déclare des vatiables en tant que composants
Exemple
dim MonCheck as windows.forms.checkbox
dim MonRB as windows.forms.radiobutton

avec une boucle je repère un composant correspondant
MaFeuille.controls.index(1) par exemple
Je voudrais que la variable MonCheck corresponde au composant
MaFeuille.controls.index(1). Et que quand je fais MonCheck.Checked = true il
me coche le composant correspondant.

J'ai tenté
MonCheck = MaFeuille.controls.index(1)
MonCheck.Checked=true
Quand je visualise l'onglet automatique (espion de variables) mes variables
prenne les bonne valeur mais pas le composant

Le même problème se pose pour récupérer la valeur du composant.
Je passe par cette variables pour alimenter et lire car ma feuille contient
30 checkbox et 90 radiobutton (3 par check) donc je cherche à tout faire en
une seule fonction.

D'avance merci pour votre aide




Avatar
Lucio
Je me suis un peu loupé je la refait

Dim XCheck As Windows.Forms.CheckBox
Dim XControl as Windows.Forms.Control


For Each XControl In Me.TabPage3.Controls
If marequete.hasrow = true then

XCheck = DirectCast(XControl, Windows.Forms.CheckBox)
XCheck.Checked = False
End if
next

"Lucio" a écrit :

Bonjour,

Je sais que j'ai posté un message semblable il y a peu mais je tente de le
refaire en étant plus clair

Je déclare des vatiables en tant que composants
Exemple
dim MonCheck as windows.forms.checkbox
dim MonRB as windows.forms.radiobutton

avec une boucle je repère un composant correspondant
MaFeuille.controls.index(1) par exemple
Je voudrais que la variable MonCheck corresponde au composant
MaFeuille.controls.index(1). Et que quand je fais MonCheck.Checked = true il
me coche le composant correspondant.

J'ai tenté
MonCheck = MaFeuille.controls.index(1)
MonCheck.Checked=true
Quand je visualise l'onglet automatique (espion de variables) mes variables
prenne les bonne valeur mais pas le composant

Le même problème se pose pour récupérer la valeur du composant.
Je passe par cette variables pour alimenter et lire car ma feuille contient
30 checkbox et 90 radiobutton (3 par check) donc je cherche à tout faire en
une seule fonction.

D'avance merci pour votre aide