PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV (précédentes versions) → Problème avec la propriété Couleur d'un champ cloné avec ChampClone
Problème avec la propriété Couleur d'un champ cloné avec ChampClone
Débuté par Stéphane M., 05 jan. 2018 16:04 - Aucune réponse
Posté le 05 janvier 2018 - 16:04
Bonjour,

Je me suis inspiré de l'exemple WW_SondagesDynamiques pour réaliser un site WebDev dynamique sous WebDev 22 :
- un modèle de champs
- une page dynamique avec clonage (ChampClone) du modèle de champs pour chaque question
- une procédure d'initialisation pour affecter le libellé de la question et les différentes propositions de réponse.

La nouveauté par rapport à l'exemple est au niveau des propositions de réponse, l'exemple utilise plusieurs modèles de champs en fonction du nombre de propositions, j'ai préféré cloné des interrupteurs pour gérer plus facilement un nombre variable de propositions.



Extrait de code du clonage des questions :

Procedure ShowQuestionnaire(LOCAL pn_ID est un entier)
...
POUR TOUT st_QUESTION, n_Compteur de gtab_st_QUESTION
SELON st_QUESTION.QUESTION_TYPE
CAS QUERY_ONE_CHOICE, QUERY_MULTI_CHOICES
s_NomChampQuestion = "cQuestion_" + n_Compteur
c_Champ <- ChampClone(CMOD_CQ_QUESTION_CHOICE, s_NomChampQuestion)
c_Champ.Init(st_QUESTION, n_Compteur)
...
AUTRE CAS : STOP
FIN
c_Champ..Visible = Vrai
FIN



Extrait de code du modèle de champs :

Procedure Init(LOCAL pst_QUESTION est un stC3_CQ_QUESTION, pn_NumQuestion est un entier)

ZTR_Query = pn_NumQuestion + ". " + pst_QUESTION.QUESTION_TEXT
POUR i = 1 _A_ pst_QUESTION.NB_CHOICES
st_CHOICE = pst_QUESTION.tab_Choices[i]
c_Champ <- {"INT_CHOICE_" + i, indChamp}
c_Champ..Visible = Vrai
c_Champ[1]..Libellé = st_CHOICE.CHOICE_TEXT
FIN

POUR i = (pst_QUESTION.NB_CHOICES + 1) A NB_MAX_CHOICES
{"INT_CHOICE_" + i, indChamp}..Visible = Faux
FIN

cQuestion_ + i : modèle de champs cloné avec libellé de la question numéro i et ses propositions de réponse.
INT_CHOICE_ + i : proposition de réponse numéro i

Tout fonctionne jusqu'à une dernière demande, colorer certaines propositions de réponses en fonction de critères spécifiques.

Suite de la procédure Init() :
// Question déjà répondue ?
SI pst_QUESTION.TEXT_ANSWER <> "" ALORS
POUR TOUTE chaîne s_Answer de pst_QUESTION.TEXT_ANSWER SEPAREE PAR ";"
n_Answer = Val(s_Answer)
SI 0 < n_Answer <= pst_QUESTION.NB_CHOICES ALORS
c_Champ <- {"INT_CHOICE_" + n_Answer, indChamp}
c_Champ[1] = Vrai

// Flag ?
st_CHOICE = pst_QUESTION.tab_Choices[n_Answer]
SI st_CHOICE.HIGH_RISK_FLAG = "Y" ALORS
c_Champ..Couleur = RougeFoncé
FIN
FIN
FIN
FIN


L'instruction colore les interrupteurs de numéro n_Answer de chaque question et pas seulement celui du modèle de champs courant (si l'utilisateur a répondu à la question 1 la proposition 2 et si cette proposition est flaggée, tous les interrupteurs numéro 2 des différentes questions sont colorés en rouge)


Je teste en dur certaines propositions avec ce code :

{"cQuestion_1.INT_CHOICE_2", indChamp}..Couleur = RougeFoncé
{"cQuestion_2.INT_CHOICE_3", indChamp}..Couleur = BleuFoncé


Idem ! Tous les interrupteurs numéro 2 sont rouges et pas seulement celui de la question 1, tous les interrupteurs numéro 3 sont bleus et pas seulement celui de la question 2.

Avez-vous déjà rencontré ce problème ou uné suggestion ?