shenkool
Messages postés15Date d'inscriptionmercredi 8 novembre 2006StatutMembreDernière intervention21 septembre 2009
-
29 juin 2009 à 15:27
shenkool
Messages postés15Date d'inscriptionmercredi 8 novembre 2006StatutMembreDernière intervention21 septembre 2009
-
7 juil. 2009 à 10:35
Bonjour a tous
Tout d'abord un grand merci a vous pour ce site qui m'a sortie du petrin plus d'une fois, malheuresement cette fois ci je seche. Je precise que je suis vraiment debutant en macro Access.
Voila mon probleme : Je souhaite faire reference a un ensemble d'objets ( listbox, bouton de commande etc) qui expose la meme methode "visible". Je ne sais pas comment m'y prendre sans lister un a un chaque objet et de dire
pour chaque objet si je veut qu'il soit visible ou non.
Je souterais avoir quelque chose du genre MonGroupeObjet.visible= true
Je crois qu'il faut passe par des classes mais j'en suis pas sure et je sais pas comment faire.
Merci d'avance pour votre aide.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 30 juin 2009 à 10:40
l'utilisation de la collection controls selon la position de chacun (1 à 5, 5 à 10, etc.....) n'est malheureusement pas toujours fiable
une solution serait alors de "marquer" les contrôles que tu veux changer, en mode design :
rempli leur propriété TAG, avec n'importe quoi (juste "m" par exemple)
puis dans le for each, ne modifie le visible que des contrôles dont le tag n'est pas vide
++
shenkool
Messages postés15Date d'inscriptionmercredi 8 novembre 2006StatutMembreDernière intervention21 septembre 2009 29 juin 2009 à 16:49
Bonjour Mayzz,
Pour la premiere solution, je pense que tu parle d'un frame option bouton mais mes controles sont soit des listbox soit des boutons de commande et je ne sais pas s'il est possible de les integrer dans un frame d'options et de les controlés, et pour la deuxieme solution j'y est pas pensé mais pour la lisibilité du code c'est pas terrible
Je me demande s'il est pas possible de creer une classe qui reference l'ensemble des controles que je souhaite inserer et ensuite dans mon code appeler une methode (par ex: afficher) pour ma classe.
Par contre je ne sais pas du tout comment m'y prendre
Merci Mayzz pour ta reponse et je croi que j'adopterai ta 2ieme solution si je trouve pas exactement ce que je veux.
shenkool
Messages postés15Date d'inscriptionmercredi 8 novembre 2006StatutMembreDernière intervention21 septembre 2009 30 juin 2009 à 13:47
la propieté tag je ne la connaissais pas et ca a l'air tres partique
voila ce que j'ai fais donc
Dim ctr As Control
For Each ctr In Me.Form.Controls If ctr.Tag "appli" Then ctr.Visible False
Next ctr
je me demande si pour le test comparaison si je peux utiliser ce que j'ai fais ou plutot faire ceci If StrComp(ctr.Tag, "appli") 0 Then ctr.Visible False
quelle est le meilleur choix?
petite question a part , pourqoi l'intellsence ne me propose pas la methode visible pour ctr alors que cela fonctionne correctement
Merci encore pour vos aides.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 30 juin 2009 à 13:56
strcomp donne des options de comparaison plus évoluées et paramétrables que EGAL, pas spécialement utiles ici
le type "control" représentant des objets de différents types, les propriétés peuvent être différentes ou même ne pas exister
l'intellisense ne peut donc pas deviner, en mode conception, le control qui sera représenté en mode execution
shenkool
Messages postés15Date d'inscriptionmercredi 8 novembre 2006StatutMembreDernière intervention21 septembre 2009 6 juil. 2009 à 15:42
Bonjour a tous,
Apres quelque recherche j'ai trouvé exactement ce que je voulais faire. En faite je voulais creer une nouvelle collection d'objet mais je ne savais pas comment l'exprimer.
donc voila un exemple, cela pourra servir a d'autre peut etre:
Dim collEACP As Collection, i As Byte
Set collEACP = New Collection
collEACP.Add Form_Formulaire2.Version
collEACP.Add Form_Formulaire2.Alim
For i = 1 To collEACP.Count
collEACP.Item(i).Visible = False
Next i
Set collEACP = Nothing
Par contre j'ai essayé de faire la meme chose avec la boucle For each mais cela ne fonctionne pas
shenkool
Messages postés15Date d'inscriptionmercredi 8 novembre 2006StatutMembreDernière intervention21 septembre 2009 7 juil. 2009 à 08:31
Salut Mayzz et PCPT,
J'ai compris pourquoi avec la boucle for each ca ne fonctionne pas. En faite lorsque je declare par exemple C as Control , dans la boucle il commence par C=0, or dans l'ajout de mes controls dans la collection CollEACP( methode .add) la premiere valeur est indexé à 1.
Bon ce n'est pas tres grave du moment que cela fonctionne avec une boucle for traditionnelle je suis deja content
Merci pour vos reponses
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 7 juil. 2009 à 08:43
salut,
tant mieux si çà marche
mais pour info, c ne vaut pas 0 (ni même 1)
c est le contrôle
en entrant dans la boucle il représente le premier élément de la collection, qui en effet commence à 1
autrement dit, au premier passage,