cs_drakkard
Messages postés99Date d'inscriptionlundi 20 juin 2005StatutMembreDernière intervention20 janvier 2009
-
18 août 2005 à 16:07
cs_drakkard
Messages postés99Date d'inscriptionlundi 20 juin 2005StatutMembreDernière intervention20 janvier 2009
-
22 août 2005 à 11:36
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...
cs_drakkard
Messages postés99Date d'inscriptionlundi 20 juin 2005StatutMembreDernière intervention20 janvier 2009 19 août 2005 à 09:15
Bonjour, bonjour
juste pour CanisLupus et PCPT, voici le code au final ( tjs en test ):
Private Sub Command1_Click()
Dim Ctrl As Object
Dim myString As String
Dim myVar
myVar = 0
For Each Ctrl In Me '<== Me ou Faudit ( nom de la form ) mmême résultat !!!
If Ctrl.Container Is Frame1 Then
On Error GoTo myExit
myString = myString & Chr(13) & Ctrl.Name
If Ctrl.Visible = True Then
myString = myString & Chr(9) & "vrai"
Else
myString = myString & Chr(9) & "faux"
End If
myVar = myVar + 1
End If
Next Ctrl
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 19 août 2005 à 11:58
OK, je vois. Ton menu est un controle mais ne possède pas la propriété Container donc plantage. Pour éviter ça :
For Each Ctrl In Me '<== Me ou Faudit ( nom de la form ) mmême résultat !!!
if not(typeof ctrl is Menu) then
If Ctrl.Container Is Frame1 Then
On Error GoTo myExit
myString = myString & Chr(13) & Ctrl.Name
If Ctrl.Visible = True Then
myString = myString & Chr(9) & "vrai"
Else
myString = myString & Chr(9) & "faux"
End If
myVar = myVar + 1
End If
end if
Next Ctrl
Ca zappera le (ou les) menus.
-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 août 2005 à 13:52
désolé, je vois toujours pas. le menu n'est pas contenu dans la Frame. logiquement, il n'est pas listé. (et tests hier avec un menu, pas d'erreur)
le truc drakkard, c'est que tu voulais diférencier les types hier, et là, tu ne le fais plus.....
donc après le "is dans frame......"mystring mystring & "*" & ctrl.name & ".Visible " & Ctrl.visible & vbcrlf
myvar = myvar+1 'que tu devrais typer d'ailleurs
cs_drakkard
Messages postés99Date d'inscriptionlundi 20 juin 2005StatutMembreDernière intervention20 janvier 2009 19 août 2005 à 14:41
Je te rappelle PCPT,
que je cherche depuis le début,
à savoir si des controls dans un frame sont visibles ou non et actifs ou non...
Trève de parenthèses.
Je vais être plus clair :
ma Form : faudit contient :
- un MonthView
- un Picture
- un Frame : frame2 je me fous des controls de celle-ci.
- un Frame : frame1 avec quelques controls dont je veux vérifier le statut.
- un DataGrid
- un Adodc
- un ImageList
- un Menu
Et ils sont controlés dans cet ordre : MonthView, Picture, ...
( ordre de la liste ci-dessus ).
Donc étonnant qu'il affiche Menu et ImageList ( je l'avais oublié celui là ),
mais seulement ces deux autres controls !!!!
Voilà voilà !!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 août 2005 à 15:20
qu'il y ait d'autres conmposants, c'était plutôt évident. çà ok. j'en reviens (désolé d'insister lourdement) sur le fait que ta Fame ne peut pas contenir de menu. donc si tu ne listes que "ses enfants", tu ne devrais pas avoir d'erreur à gérer. après ok, là çà fonctionne, donc ok. mais c'est + pour comprendre vraiment. désolé, j'ai du me cogner violemment, mais je bloque!
j'ai fais les tests en même temps, au cas ou qqc m'aurait échappé. pas d'erreur chez moi.
Dim Ctrl As Object
For Each Ctrl In Me
If Ctrl.Container Is Frame1 Then _
If ((TypeOf Ctrl Is TextBox) Or (TypeOf Ctrl Is ComboBox)) Then _
MsgBox Ctrl.Name & ".Enabled = " & Ctrl.Enabled & VbCrlf & _
Ctrl.Name & ".Visible = " & Ctrl.Visible
Next Ctrl
on ne prend que le Visible et Enabled des combo et Text contenu dans Frame1.
c'est ce TypeOf qui justement, t'empêche de tomber sur un contrôle qui n'a pas la propriété générant l'erreur...
cs_drakkard
Messages postés99Date d'inscriptionlundi 20 juin 2005StatutMembreDernière intervention20 janvier 2009 19 août 2005 à 15:53
Cela ne me dérange pas que tu insistes.
Au contraire...
Moi aussi je ne vois pas pourquoi il m'affiche ces deux controls qui ne sont pas dans le frame.
Heeuuu, je sais qu'un frame ne peut contenir de Menu.
A propos de l'erreur, elle apparait lorsque le code tente de récupérer l'état du caption du frame, oui oui !!!
Il énumère tout les controls du frame et ensuite tente d'énumérer le caption...
je n'ai que cette erreur, après c'est l'histoire des autres controls affichés
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 août 2005 à 16:21
tu veux bien essayer mon p'tit bout de code au dessus stp?
là on ne gère que le contenu de la Frame1, pas la Frame1 elle-même. si tu as une erreur à sa lecture, c'est dans une autre partie de code que toutes les participations de chacun. tu peux copier cette partie?
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 19 août 2005 à 16:41
pcpt > fais le test comme je l'ai fait (c'est à dire avec un menu sur la form, créé par le créateur de menus) et tu comprendras : le menu ne possède pas de propriété container en vb6 mais est listé dans la collection des controles donc ça plante forcément sur la ligne if ctrl.container... au moment où c'est le menu qui est testé.
Je reconnais que je me suis banané pour le coup du form.frame.control, désolé, j'ai de plus en plus tendance à penser en dotnet. Mais c'est ton code que j'ai testé sous vb6 et il plante d'où mon précédent post.
PS : Une ImageList n'a pas non plus de propriété container donc 2ème possibilité de plantage. Alors, soit on s'amuse avec des on error, soit on teste le type des controles avant de tester leur container.
Pas besoin de s'énerver, on va y arriver.
-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 août 2005 à 17:13
arf, bah j'y comprend plus rien.
j'avais fait les tests avec le menu, enfin, tout comme il faut, et j'avais pas d'erreur. je viens de recopier mon code, et en effet, çà plante (logiquement) sur le menu...
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 août 2005 à 17:33
bon, voici le principe (donc pas de gestion d'erreur) mais il faut compter pour ne pas répertorier un objet déjà lu :
j'ai un menu, un bouton, et une frame, qui contient 3 txtbox
Option Explicit
Private Sub Command1_Click()
Dim Ctrls As Object, MyFrame As Object, MyCtrl As Object
Set MyFrame = Me.Frame1.Container
For Each Ctrls In Me
For Each MyCtrl In MyFrame
If ((TypeOf MyCtrl Is TextBox) Or (TypeOf MyCtrl Is ComboBox)) Then _
Debug.Print MyCtrl.Name & ".Enabled = " & MyCtrl.Enabled & " || " & _
MyCtrl.Name & ".Visible = " & MyCtrl.Visible
DoEvents
Next MyCtrl
Next Ctrls
Set MyFrame = Nothing
End Sub
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 19 août 2005 à 17:41
umm, nous voilà au même point !
Option Explicit
Private Sub Command1_Click()
Dim Ctrls As Object, MyFrame As Object, MyCtrl As Object
Set MyFrame = Me.Frame1.Container
For Each MyCtrl In MyFrame
If ((TypeOf MyCtrl Is TextBox) Or (TypeOf MyCtrl Is ComboBox)) Then _
Debug.Print MyCtrl.Name & ".Enabled = " & MyCtrl.Enabled & " || " & _
MyCtrl.Name & ".Visible = " & MyCtrl.Visible
DoEvents
Next MyCtrl
Set MyFrame = Nothing
End Sub