PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Manipuler des champs interrupteur clonés
Manipuler des champs interrupteur clonés
Iniciado por valentin.merchat1, 16,jul. 2020 10:09 - 3 respuestas
Publicado el 16,julio 2020 - 10:09
Bonjour, j'ai créé un champ interrupteur dans ma fenêtre en fonction du nombre de type de droits à attribuer à une personne sur une application.

Voici le code en question :

champ est un Champ
champ <- ChampClone(InterrupteurToutDroit,"interrupteurToutDroit"+elem)
champ <- ChampClone(InterrupteurToutDroit,"interrupteurToutDroit"+elem)
champ..Largeur = 25
champ..Hauteur = 25
champ..X = tabDroit..X + nomLigneDroit..Largeur + etatAction..Largeur/2 + posAjoutColonne - 10
posAjoutColonne += etatAction..Largeur
champ..Visible = Vrai

Je souhaiterai faire des opérations suivant l'interrupteur coché mais je n'arrive pas à les récupérer pour les manipuler.
Je n'ai pas bien compris le principe des indirections.

Si quelqu'un peut m'aider ça serait sympathique :)
Miembro registrado
953 mensajes
Publicado el 16,julio 2020 - 11:35
bonjour Valentin,

Est-ce que ce que vous souhaitez mettre en place, ne serait pas plus simple à gérer grâce à un zone répétée horizontale ?
Vous placez un champ invisible qui permettra de stocker l'Identifiant du droit associé, et un champ interrupteur, vous créer les deux attributs pour ces champs, et ensuite il suffit de faire un ZoneRepeteeAjouteLigne()

je pense que çà sera plus simple à gérer.

Si vous souhaitez utiliser les clones, il faut utiliser la propriété '..Traitement'
vous pouvez par exemple, lors de l'affectation du nom de votre clone, ajouter l'identifiant du droit associé à l'interrupteur , ce qui vous permettra ensuite de savoir à quel droit l'interrupteur est associé ( en récupérant l'identifiant dans le nom du champ )

voici un exemple :

// C'est une constante de la fenêtre
CONSTANT
CGF_INTER_CLONE_NOM = "inter_droit_"
FIN


champ est un Champ
_espace_inter est un entier=10
_cur_pos est un entier=inter_source..X+inter_source..Largeur+_espace_inter

POUR _id_clone=1 À 3
champ <- ChampClone(inter_source,CGF_INTER_CLONE_NOM+DonneGUID(guidBrut))

champ..X = _cur_pos
_cur_pos+=inter_source..Largeur+_espace_inter

champ..Traitement[trtModification]+=IHM_Clic_Inter
champ..Visible=Vrai
FIN


et la procédure

Procedure IHM_Clic_Inter()

Trace(MoiMême..Nom+" valeur : "+MoiMême[1]+" , identifiant droit : "+ExtraitChaîne(MoiMême..Nom,2,CGF_INTER_CLONE_NOM))



bon dèv
Miembro registrado
953 mensajes
Publicado el 16,julio 2020 - 11:42
si vous voulez sauvegarder les choix , et ne rien gérer lors du clic sur l'interrupteur, pas besoin d'utiliser la propriété ..Traitement

il faut comme vous l'avez indiqué utiliser les indirections.

Le plus simple c'est de stocker dans un tableau le nom des champs clonés.

et de parcourir ce tableau.

// Lors de la création :
champ est un Champ
_espace_inter est un entier=10
_cur_pos est un entier=inter_source..X+inter_source..Largeur+_espace_inter

_tbl_clone est une tableau de chaîne

POUR _id_clone=1 À 3
Ajoute(_tbl_clone,CGF_INTER_CLONE_NOM+_id_clone)
champ <- ChampClone(inter_source,CGF_INTER_CLONE_NOM+_id_clone)

champ..X = _cur_pos
_cur_pos+=inter_source..Largeur+_espace_inter

champ..Visible=Vrai

FIN


puis pour récupérer leur valeur :

POUR TOUT _clone de _tbl_clone
Trace("Nom du champ : "+_clone+" , valeur : "+{_clone,indChamp}[1])
FIN
Publicado el 16,julio 2020 - 11:58
Bonjour Christophe ce que je veux faire comme opération suivant si on coche ou non un des interrupteurs clonés et l'opération suivante :

on coche une case se trouvant au dessus de le colonne concernée --> cela coche toutes les cases concernant la colonne du type de droit concerné

(ex : une case au dessus de la colonne droit à la visualisation sur une fenêtre, on la coche et donc on attribue à un groupe d'utilisateur le droit à la visualisation sur toutes les fenêtres de l'application)

En sachant que le tableau est un existant de base créé lui aussi en clonage (on a une colonne action que l'on va dupliquer et créé toutes colonnes pour chaque type de droit existant, une colonne visu, une colonne ajout, etc.

Et donc ce que je souhaite faire c'est de récupérer la colonne cloné qui concerne l'interrupteur lui aussi cloné.

Une fois récupéré je coche un à un chaque bouton de la colonne car c'est une opération de selectAll que je veux faire.

Merci pour vos retour ! :)