Comment vérifier l'état d'un control [Résolu]

Signaler
Messages postés
100
Date d'inscription
lundi 20 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009
-
Messages postés
100
Date d'inscription
lundi 20 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009
-
Bonjour, bonjour,

je cherche à vérifier le statut de plusieurs control ( label, combo, ... )
dans un frame spécifique.
Savoir si ils sont actifs ou non et visibles ou non...

Je pensais à un for each control, mais je galère...

Merci d'avance....

32 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
pourquoi tu MELANGES la proposition de Scortex sous .NET et la mienne sous VB6


une petite erreur par contre
MSDN : Conseil L'instruction Select Case peut s'avérer mieux adaptée à l'évaluation d'une expression simple qui possède plusieurs actions possibles. Toutefois, la clause TypeOf objectname Is objecttype ne peut pas être utilisée avec Select Case.



Donc petite variante en conséquence... (testé de suite)

Private Sub Command1_Click()
Dim Ctrl As Object


For Each Ctrl In Me
If Ctrl.Container Is Frame1 Then
If TypeOf Ctrl Is TextBox Then
MsgBox "TXT... contenu de " & Ctrl.Name & " : " & Ctrl.Text
ElseIf TypeOf Ctrl Is ComboBox Then
MsgBox "CBO... contenu de " & Ctrl.Name & " : " & Ctrl.Text
End If
End If
Next Ctrl


End Sub

PCPT
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 118 internautes nous ont dit merci ce mois-ci

Messages postés
379
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
20 avril 2011
1
Hello,

En VB.NET : tu parcours les composants de ta form comme ça : me.controls(i)



While i < form.Controls.Count



If
TypeOf (form.Controls(i))
Is TextBox
Then



ElseIf
TypeOf (form.Controls(i))
Is Label
Then



End
If


i = i + 1



End
While

Si tu veux parcourir une frame, c'est pareil, il faut juste la trouver, ensuite c'est du style : me.controls(i).controls(i) , etc..

Seb.
Messages postés
100
Date d'inscription
lundi 20 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009

merci pour le bout de code,

est-il valide sur VB6, j'avais omis de le préciser...

je le testerai de toute façon...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
Salut
non :

dim Ctrl as Objet
for each Ctrl in Me
Select case TypeOf Ctrl
Case TxtBox
If Ctrl.Text="machin" then Msgbox "blabla"
If Ctrl.Visible=True then Msgbox "blabla"

Case CommandButton
If Ctrl.Caption="machin" then Msgbox "blabla"
If Ctrl.Enabled=False then Msgbox "blabla"
'etc...
End Select
Next Ctrl

PCPT
Messages postés
100
Date d'inscription
lundi 20 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009

cela devrait ressembler à cela ???
j'ai une erreur avec ce qui suit

While i < Form.Controls.Count

If TypeOf Form.Controls(i) Is Frame Then

MsgBox "frame : " & Form.Controls(i).Name ' just pour le test
While j < Form.Controls(i).Controls.Count
MsgBox Form.Controls(i).Controls(j).Name 'just pour le test
Wend

End If

i = i + 1

Wend
Messages postés
100
Date d'inscription
lundi 20 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009

j'ai oublié de préciser,

l'erreur est au deuxième while !!!
Messages postés
100
Date d'inscription
lundi 20 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009

je modifie ma question,

j'ai des combos et des labels sur un frame dans un formulaire.
Je souhaite vérifier l'état de ces combos et labels, du frame,
pas les autres qui sont sur le formulaire...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
dans mon exemple, remplace Me par le nom de ta Frame.
c'est pas un mélange des propositions....

PCPT
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
14
Salut, dans ce cas, préfixe avec le nom de ta frame en plus du nom de ta form :

Form.Frame.toncontrole.

Explik sommaire : le container de ton control est ta frame et le container de ta frame est ta form. Etc ...

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
et ensuite, séparément, tu fais le test de ta frame. (elle n'est pas considérée comme son contenant et contenu)
PCPT
Messages postés
100
Date d'inscription
lundi 20 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009

bon bah marche pas !!!!

vb dit "l'objet ne gère pas cette propriété ou cette méthode"

Il ne veut pas de form.frame.controls ni de frame.controls
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
14
Frame.controls ne sera jamais accepté car la collection controls ne fait partie que du container form (le nom de ta form).
Mais, dans l'expression form.frame.controls , remplace form par le nom de ta form (form1 ou le nom que tu lui as donné) et frame par le nom de ta frame (frame1 ou le nom que tu lui as donné).

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
14
Si tu veux, je crée une form (que j'appelle 'totoform') et dedans je met une frame (que j'appele 'totoframe'). Dans cette frame je met un controle (textbox1). Ca donnera :

mavar = totoform.totoframe.textbox1.text

Là, tu affiches le contenu de textbox1 qui est dans ta frame totoframe, laquelle est dans ta form totoform.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
86
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
13 septembre 2005
1
je suis pas d'accord avec toi CanisLupus (mais je me trompe peut-être...)

Quand tu as textbox1 dans Frame1 dans Form1, tu fais
"Form1.TextBox1.text" ou "Form1.TextBox1.Left" ou ce que tu veux
d'autre, sans mettre le ".frame1" . Chez moi ça pédale dans la soupe si
tu lui dis comme toi tu fais !!!!



Bon courage en tous cas ;)





C2
Messages postés
100
Date d'inscription
lundi 20 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009

ok ok !!!

ma form s'appelle faudit, mon frame frame1,
et j'ai dans le form label1, label2, combo1, combo2

donc si je souhaite énumérer ( pour l'exemple ) le nom des controls je devrais avoir un truc du genre :

dim Ctrl as Objet
for each Ctrl in faudit.frame1.controls '<== pour énumérer les controls
Select case TypeOf Ctrl '<== pour info mon vb demande le "Is" ici !!!
Case label
mytext = "Label : "
Msgbox mytext & ctrl.Name
Case Combobox
mytext = "Combobox : "
Msgbox mytext & ctrl.Name
'etc...
End Select
Next Ctrl

Et cela ne fonctionne pas !!!!
Messages postés
100
Date d'inscription
lundi 20 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009

Merci PCPT,

cela fonctionne, il énumère mes controls dans mon frame,
et mon menu...

Etrange ???
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
si c'est bon, tu peux valider....
sinon, j'ai pas bien compris "et mon menu"

en plus haut, tu as écrit
"ma form s'appelle faudit, mon frame frame1, et j'ai dans le form label1, label2, combo1, combo2"

simple lapsus?
PCPT
Messages postés
100
Date d'inscription
lundi 20 juin 2005
Statut
Membre
Dernière intervention
20 janvier 2009

A propos de menu,
dans ma form j'ai un menu ( tu sais "Fichier", "Edition", ... )

Autrement cela fonctionne excepté cet imprévu ( pour le menu )

Après vérif :

j'ai une erreur lorsqu'il a fini d'énumérer les controls et qu'il tente d'énumérer le caption du frame.
Et ensuite il énumère le menu

J'ai ajouter un on error resume next
mais cela ne convient pas ( il énumère tjs le menu)
j'ai ajouter un on error goto myExit

et c'est ok...

Mais cela n'explique pas pourquoi il énumère le menu...
Si quelqu'un a une explication !!!

Merci à tous pour tout !!!!
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
bah si t'es capable de faire et d'emprisonner un menu dans une frame, çà m'intéresse grandement ;)

si tu listes correctement uniquement les éléments qui t'interessent, posés sur la FRAME, qui est elle-même posée sur la FORM, comment veux-tu qu'un menu qui appartient à une FORM puisse être listé dans le contenu des objets de ta FRAME.....

PCPT
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
14
drakkard > J'aimerais bien voir le code que tu as créé au final (si tu as tenu compte des réponses sur ce topic) et qui énumère le menu. Car il doit y avoir un prob.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?