PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Zone Répétée et Interrupteur : impossible d'accéder aux propriétés d'une des options de l'interrupteur
Zone Répétée et Interrupteur : impossible d'accéder aux propriétés d'une des options de l'interrupteur
Débuté par Christophe PRADEL, 28 avr. 2017 12:28 - 6 réponses
Membre enregistré
136 messages
Popularité : +12 (14 votes)
Posté le 28 avril 2017 - 12:28
Bonjour,
Après avoir cherché sur le Forum et ailleurs, je me tourne vers vous pour savoir si quelqu'un connait une voie de contournement de ce que je considère comme un bug.

Contexte
----------
J'ai une zone répétée ZR_ZoneRepetee qui contient un interrupteur INT_Interrupteur contenant 3 options

Je cherche, par programmation, à pouvoir agir sur l'état "Grisé" indépendamment pour chaque option et pour chaque occurrence de la ZR

Ce qui marche
----------------
Griser le deuxième interrupteur (et seulement celui-ci) entièrement (toutes les options) :
ZR_ZoneRepetee[2].INT_Interrupteur..Grisé = Vrai


Griser l'option 2 de tous les interrupteurs :
ZR_ZoneRepetee.INT_Interrupteur[2]..Grisé = Vrai


Ce qui ne marche pas
------------------------
Griser l'option 2 du troisième interrupteur :
ZR_ZoneRepetee[3].INT_Interrupteur[2]..Grisé = Vrai


J'ai une erreur à l'exécution (pas à la compilation) :

Erreur à la ligne 2 du traitement Clic sur BTN_Grise
Le champ INT_Interrupteur ne supporte pas l'opérateur [ ].

-------------------------------------------------------------------------

Il est manifestement faux de dire que l'interrupteur ne supporte pas l'opérateur [ ], vu que le cas 2 marche bien

Je serais bien passé par les attributs de la ZR, mais malheureusement on ne peut pas y cibler une des options de l'interrupteur


A votre écoute pour toute suggestion

Bonne journée
Posté le 28 avril 2017 - 16:21
Christophe PRADEL a exposé le 28/04/2017 :
Bonjour, Après avoir cherché sur le Forum et ailleurs, je me tourne vers vous
pour savoir si quelqu'un connait une voie de contournement de ce que je
considère comme un bug.

Contexte
----------
J'ai une zone répétée ZR_ZoneRepetee qui contient un interrupteur
INT_Interrupteur contenant 3 options

Je cherche, par programmation, à pouvoir agir sur l'état "Grisé"
indépendamment pour chaque option et pour chaque occurrence de la ZR

Ce qui marche
----------------
Griser le deuxième interrupteur (et seulement celui-ci) entièrement (toutes
les options) :
ZR_ZoneRepetee[2].INT_Interrupteur..Grisé = Vrai


Griser l'option 2 de tous les interrupteurs :
ZR_ZoneRepetee.INT_Interrupteur[2]..Grisé = Vrai


Ce qui ne marche pas
------------------------
Griser l'option 2 du troisième interrupteur :
ZR_ZoneRepetee[3].INT_Interrupteur[2]..Grisé = Vrai


J'ai une erreur à l'exécution (pas à la compilation) :

Erreur à la ligne 2 du traitement Clic sur BTN_Grise
Le champ INT_Interrupteur ne supporte pas l'opérateur [ ].

-------------------------------------------------------------------------

Il est manifestement faux de dire que l'interrupteur ne supporte pas
l'opérateur [ ], vu que le cas 2 marche bien

Je serais bien passé par les attributs de la ZR, mais malheureusement on ne
peut pas y cibler une des options de l'interrupteur


A votre écoute pour toute suggestion

Bonne journée


bonjour,

avez-vous essayé de passer par les attributs ?

--
Cordialement JeAn-PhI
Membre enregistré
280 messages
Popularité : +22 (28 votes)
Posté le 30 avril 2017 - 06:00
Bonjour,
Peut-être envisager quelque chose comme :
SI ZR_ZoneRepetee=3 ALORS ZR_ZoneRepetee.INT_Interrupteur[2]..Grisé = Vrai


--
Cordialement.
Je vous souhaite une bonne journée depuis le Vietnam.

Olivier.
http://www.impulse-web.com
Membre enregistré
2 572 messages
Popularité : +222 (260 votes)
Posté le 01 mai 2017 - 07:07
Bonjour,

Au lieu de créer 3 options dans ton champ interrupteur, tu crées 3 champs interrupteurs, et pour le coup tu peux passer par les attributs, du coup tu auras en code :
//Griser les options de la ligne 2
ZR_Interrupteur[2].ATT_Option1 = Grisé
ZR_Interrupteur[2].ATT_Option2 = Grisé
ZR_Interrupteur[2].ATT_Option3 = Grisé

//Griser l'option 2 de toutes les lignes
POUR i = 1 _A_ ZR_Interrupteur..Occurrence
ZR_Interrupteur[i].ATT_Option2 = Grisé
FIN

//Griser l'option 2 de la ligne 3
ZR_Interrupteur[3].ATT_Option2 = Grisé






--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
136 messages
Popularité : +12 (14 votes)
Posté le 04 mai 2017 - 16:48
Je pense que la solution proposée par Philippe SB est jouable.
Je vais l'essayer

Reste qu'il s'agit bien pour moi d'un bug !
Membre enregistré
1 144 messages
Popularité : +50 (142 votes)
Posté le 18 mai 2021 - 15:15
Bonjour,

Si ça peut aider, voici le code que j'utilise dans ce cas de figure :
sMaCchaine est chaîne=ZoneRépétée1[ZoneRépétée1].INT_MesCases
nPosition est un entier=Val(Gauche(indice,1))*2
sMaCchaine[(nPosition-1) À nPosition]="1;"
ZoneRépétée1[ZoneRépétée1].INT_MesCases = sMaCchaine


--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Tuto WINDEV sur ma chaîne Youtube
Membre enregistré
136 messages
Popularité : +12 (14 votes)
Posté le 18 mai 2021 - 19:03
Bonjour Thierry

Merci pour l'info.
Ca marche très bien pour cocher ou décocher une des options de l'interrupteur, mais pour agir sur l'état grisé, je n'y suis par arrivé