Depuis la version 23 de WINDEV, il possible dans une zone répétée d'ajouter un contenu différent pour chaque répétition. C'est la commande ZoneRepetéeAjouteFI() qui permet d'ajouter une fenêtre interne dans la répétition.
Une fois les fenêtre internes ajoutées dans la zone répétée, il peut être intéressant d'accéder aux champs de la fenêtre interne ou d'exécuter une procédure de la fenêtre interne.
Pour cela, il est nécessaire de récupérer le champ fenêtre interne ajouté dans la zone répétée. Pour cela, je vous propose d'utiliser la procédure suivante qui retourne le champ fenêtre interne ou Null, si la fenêtre n'est pas encore affichée.
PROCÉDURE pFenetreInterneDeZR(sZR est un Champ, nIndice est un entier)
// On récupère le nom de la fenêtre interne
sNomZR est une chaîne = sZR[nIndice]..Nom // On vérifie si elle existe.
SI sNomZR [= sZR..Nom ALORS RENVOYER Null
QUAND EXCEPTION DANS
pChamp est un Champ <- { ChaîneConstruit("%1[%2].%3", sZR..Nom, nIndice, sNomZR), indChamp}
FAIRE
RENVOYER Null
FIN
RENVOYER pChamp
Il suffit ensuite dans la zone répétée ou dans sa fenêtre conteneur, utiliser une variable de type champ pour accéder au contenu de la fenêtre interne.
// Exemple : Changer la couleur des colonnes de table contenues // dans les fenêtre internes
pFIDeZR est un Champ
POUR TOUTE LIGNE Indice DE ZoneRépétée1
pFIDeZR <- pFenetreInterneDeZR(ZoneRépétée1, Indice)
SI pFIDeZR<>Null ALORS // Change la couleur des tables.
pFIDeZR.ColoreTable()
FIN
FIN
//Exemple : Changer le contenu d'un champ de la fenêtre interne.
pFIDeZR <- pFenetreInterneDeZR(ZoneRépétée1, 3)
pFIDeZR.Libellé1 = "Nouveau libéllé"
|