Accueil → WINDEV 2025 → Appel d'une procédure globale, qui se trouve dans une fenêtre interne, cette même fenêtre interne dans un champ onglet dynamique
Appel d'une procédure globale, qui se trouve dans une fenêtre interne, cette même fenêtre interne dans un champ onglet dynamique
Débuté par OLI, 27 jan. 2025 21:44 - 8 réponses
Membre enregistré 8 messages
Posté le 27 janvier 2025 - 21:44
Bonjour à toutes et tous, je me retrouve coincé dans un dev que j'ai dû reprendre. Ne parvenant pas à mettre de capture d'écran, je vais essayer d'expliquer au mieux ce dont j'aimerai réussir à faire. J'ai une fenêtre principale ( FEN_PRINC) Dans cette FEN_PRINC, il y a un champ onglet dynamique (ONG_DYN) A ce champ onglet dynamique est lié une fenêtre interne (FI_INTERNE ) Dans cette fenêtre interne , se trouve une procédure globale (MAJ_DATAS), qui, entre autres, met à jour les données qui se trouve dans cette fenêtre interne . Tant que l'utilisateur se trouve dans la fenêtre interne , l'appel de la procédure globale se fait sans souci, bien évidemment. Mais il y a également un bouton dans cette fenêtre interne qui ouvre une fenêtre (FEN_EXT) Je souhaiterai pouvoir appeler cette procédure globale (MAJ_DATAS) depuis cette fenêtre (FEN_EXT) J'ai parcouru la dochttps://doc.pcsoft.fr/fr-FR/?1013322 , les différents sites, je n'y parviens pas. Comme indiqué dans la doc, il est possible de connaître l'alias d'un onglet :// Exemple dans la documentation AliasOnglet1 est une chaîne = ONG_Test.OngletOuvre("Mon onglet 1", "FI_FenêtreInterne") Trace(ONG_Test[AliasOnglet1].Libellé)
Il est indiqué dans la document, dans la partie "Accéder au contenu de la fenêtre interne affichée dans un volet" qu'il est possible d'atteindre une procédure, je loupe peut-être quelque chose, mais je n'y arrive pas.// Appel une procédure de la fenêtre interne , cet exemple de code ne fonctionne pas ExécuteTraitement(AliasVolet1 + ".pNomProcédure", trtProcédure) // Equivalent à : MaProcédure est une procédure = gsAlias_Onglet + ".pNomProcédure" MaProcédure()
J'ai schématisé ce que j'aimerai arriver à faire. >Merci d'avance pour votre aide
Membre enregistré 860 messages
Posté le 28 janvier 2025 - 00:05
Bonjour, Pour une capture d'écran, le nom de la capture doit rester court et se limiter aux caractères a à z et aux chiffres 0 à 9 (pas de caractères spéciaux, pas d'accent, pas d'espace, etc...), par exemple "capture1.png" fonctionne. pour votre problème, j'ai une procédure Locale dans la fenêtre Interne dans un onglet et ceci fonctionne :Alias_Onglet est une chaîne Alias_Onglet = OngletOuvre(Onglet1, "Client "+ 1, Fen_FI) // Nom du Champ Onglet, Libellé de l'onglet, Nom de la Fenêtre Interne ExécuteTraitement(Alias_Onglet + ".Deplace_Btn", trtProcédure) // Deplace_Btn est le nom de ma procédure Interne
>CdltMessage modifié, 28 janvier 2025 - 00:13
Membre enregistré 8 messages
Posté le 28 janvier 2025 - 12:10
Bonjour Cédric, merci pour ta réponse et ton aide. Cet appel fonctionnera mais ce n'est pas ce que je demande ... Depuis ma fenêtre "externe", je souhaite appeler une procédure globale, mais je n'ai pas besoin d'ouvrir un onglet, puisqu'il l'est déjà ! Ou alors je ne comprends pas bien ta solution, en ouvrant le même onglet, je peux alors exécuter la procédure ? Merci pour le truc de la capture, la voici ci-dessous : >Oli
Membre enregistré 860 messages
Posté le 28 janvier 2025 - 13:03
C'est une procédure Globale (MAJ_DATAS) dans la fenêtre interne ???
Posté le 28 janvier 2025 - 14:15
OLI a écrit : Bonjour Cédric, merci pour ta réponse et ton aide.
Cet appel fonctionnera mais ce n'est pas ce que je demande ... Depuis ma fenêtre "externe", je souhaite appeler une procédure globale, mais je n'ai pas besoin d'ouvrir un onglet, puisqu'il l'est déjà !
Ou alors je ne comprends pas bien ta solution, en ouvrant le même onglet, je peux alors exécuter la procédure ?
Merci pour le truc de la capture, la voici ci-dessous :
Oli
Yop, C'est le principe des onglets dynamiques, on les manipule par leur alias. Le récupérer à l'ouverture de l'onglet est souvent le plus simple, mais après on peut faire une énumération des onglets et les identifier grâce à une variable ou une propriété dans celui ci. Regardes la doc des onglets dynamiques si t'es pas au point sur leur utilisation :https://doc.pcsoft.fr/fr-FR/?1013303 Bonne chance >
Posté le 28 janvier 2025 - 14:33
Cédric_34 a écrit : > C'est une procédure Globale (MAJ_DATAS) dans la fenêtre interne ??? Oui tout à fait. Si je j'appelle via un clic bouton, tant que je suis dans la fenêtre interne , je n'ai aucun souci, le souci vient une fois en dehors Si je dois le faire dans la fenêtre interne je dois repenser complètement l'écran qui est déjà surchargé d'infos. En affichant une fenêtre "externe", je donne la possibilité à l'utilisateur de consulter des informations complémentaires à son travail, ce qui est d'ailleurs l'objet de la demande. J'ai tourné ça dans tous les sens, je n'y arrive pas J'ai passé le week-end là dessus, ça me rend dingue. Tu as testé chez toi ? J'ai pensé à une solution qui serait de modifier les informations dans la fenêtre externe, de fermer par code l'onglet actif via l'alias et de le rouvrir mais c'est un peu dégueu non >
Posté le 28 janvier 2025 - 15:12
OLI a écrit : Cédric_34 a écrit :
C'est une procédure Globale (MAJ_DATAS) dans la fenêtre interne ???
Oui tout à fait. Si je j'appelle via un clic bouton, tant que je suis dans la fenêtre
interne , je n'ai aucun souci, le souci vient une fois en dehors
Si je dois le faire dans la fenêtre
interne je dois repenser complètement l'écran qui est déjà surchargé d'infos.
En affichant une fenêtre "externe", je donne la possibilité à l'utilisateur de consulter des informations complémentaires à son travail, ce qui est d'ailleurs l'objet de la demande. J'ai tourné ça dans tous les sens, je n'y arrive pas
J'ai passé le week-end là dessus, ça me rend dingue. Tu as testé chez toi ?
J'ai pensé à une solution qui serait de modifier les informations dans la fenêtre externe, de fermer par code l'onglet actif via l'alias et de le rouvrir mais c'est un peu dégueu non
>Oui cette procédure MAJ_DATAS se trouve dans la fenêtre interne, c'est pourquoi je l'ai dessiné dans la fenêtre interne, et je voudrais l'exécuter depuis la fenêtre externe (cadre rouge) dans mon dessin.
Membre enregistré 860 messages
Posté le 28 janvier 2025 - 16:58
Si j'ai enfin compris, le bouton dans la fenêtre externe peut exécuter le code comme ceci (reste à connaître le nom de l'alias, ici je l'ai mis en dur) :ExécuteTraitement ( Fen_Principale+ ".ALIAS_1.Deplace_Btn" , trtProcedure )
Comme l'a dit djeman, il va falloir faire une énumération des onglets si vous ne connaissez pas le nom de l'alias ouvert. >Cdlt
Membre enregistré 8 messages
Posté le 28 janvier 2025 - 21:28
Cédric_34 a écrit : Si j'ai enfin compris, le bouton dans la fenêtre externe peut exécuter le code comme ceci (reste à connaître le nom de l'alias, ici je l'ai mis en dur) :
ExécuteTraitement ( Fen_Principale+ ".ALIAS_1.Deplace_Btn" , trtProcedure )
Comme l'a dit djeman, il va falloir faire une énumération des onglets si vous ne connaissez pas le nom de l'alias ouvert.
Cdlt
Ca fonctionne mais j'ai dû changé ceci :ExécuteTraitement ( FEN_ PRINC + ".ALIAS_1.ProcedureTest" , trtProcedure )
en ceci :ExécuteTraitement ( "FEN_PRINC.ALIAS_1.ProcedureTest" , trtProcedure )
J'ignore pourquoi FEN_PRINC + ".ALIAS_1...", Windev prend le nom du titre de cette fenêtre qui est "Fenêtre principale". Un tout grand merci >