PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Plusieurs fenêtres interne ayant le même nom
Plusieurs fenêtres interne ayant le même nom
Débuté par MICHEL, 10 mai 2018 18:17 - 3 réponses
Membre enregistré
299 messages
Popularité : +16 (16 votes)
Posté le 10 mai 2018 - 18:17
Bonjour,

Après pas mal de recherches je me résouds à poster ma question :

J'utilise un classeur à onglet
Je créé dynamiquement mes onglets et j'in insère une fenêtre interne. C'est plus ou moins toujours la même, seuls les paramètres changent.

LC_Retour = OngletOuvre(pf_Interne, "Fiche Dupont", FEN_VoirEnvoyes, "22)
LC_Retour = OngletOuvre(pf_Interne, "Fiche Durand", FEN_VoirEnvoyes, "33)
LC_Retour = OngletOuvre(pf_Interne, "Fiche Duval", FEN_VoirEnvoyes, "44)

Dans LC_Retour j'ai doinc le nom d'alias de l'onglet créé
Je n'arrive pas à comprendre comment appeler les méthodes de la fenêtre de Durand.
J'ai essayé avec ChangeFenetreSource, des indirections etc et je n'y arrive pas.

Merci d'avance de vos conseils
Membre enregistré
190 messages
Popularité : +21 (23 votes)
Posté le 10 mai 2018 - 19:04
Bonjour

Il faut travailler avec les indirections si vous utilisez les onglets dynamiques

Pour chaque volet ouvert, vous récupérez un alias sous la forme : "ALIAS_1", "ALIAS_2", ...

Si l'onglet se nomme : pf_Interne

Vous pouvez appeler les méthodes de la façon suivante :
exemple pour la méthode Refresh , avec un parametre param1

ExécuteTraitement("pf_Interne.ALIAS_1.Refresh" ,trtProcedure,param1)


Si vous allez plus loin, vous pouvez parcourir les differents onglets ouverts pour faire un traitement sur un alias en particulier

Pour vous aidez, vous pouvez obtenir le nom de l'objet (champ, méthode,...) en faisant un info(MoiMême..NomComplet) à l'initialisation de l'objet.
Vous obtenez une chaine qui sera utile pour l'indirection.
Membre enregistré
299 messages
Popularité : +16 (16 votes)
Posté le 10 mai 2018 - 19:15
Génial cela fonctionne!
Merci beaucoup.
Membre enregistré
96 messages
Popularité : +18 (20 votes)
Posté le 16 mai 2018 - 14:42
Bonjour,

il est aussi possible de travailler sans les indirections, en passant par une variable champ.

Voici un petit exemple :

// fintTest est le nom de la fenêtre interne

SI ChampExiste(NomAliasOnglet) ALORS
UnOnglet est un Champ <- Onglet1[NomAliasOnglet ]
UnOnglet.fintTest.Rafraichir(NomAliasOnglet )
FIN


J'ai d'ailleurs écris un article à ce sujet qui donne un peu plus de détail (il répondait à une question similaire):
http://blog.ytreza.org/windev-onglet-dynamique-fenetres-internes-et-rafraichissement/

Je vous souhaite une bonne journée.

--
Johjo aka Jonathan Laurent

Mon blog sur WinDev : http://blog.ytreza.org
Me contacter par Twitter : @Johjo07