PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Appel a une procédure par l'alias d'une fenêtre
Appel a une procédure par l'alias d'une fenêtre
Iniciado por steph96, 03,mar. 2020 17:07 - 5 respuestas
Publicado el 03,marzo 2020 - 17:07
Bonjour,

j'ai une fenêtre_principale
qui ouvre des fiches client en FenetreSoeur
chaque FenetreSoeur est ouverte avec un alias : UUID donné aléatoirement
cela se passe bien,
je peux ouvrir autant de sœurs que je souhaite et les remettre 'dessus' en les appelant par leur alias

par contre, de chaque sœur, je peux ouvrir une autre fenêtre me permettant de changer de client a la volée sur une fiche ouverte
>> cette fenêtre appel un procédure de chargement_des_données_client de ma fiche client du genre :
FICHE_CLIENT.chargement_des_données_client("CODECLIENT")

mais là, je n'arrive pas a appeler cette procédure directement a partir de l'alias de la fiche client, vu que j'en ai plusieurs
<alias_de_la_fenetre>.chargement_des_données_client("CODECLIENT") me renvoi une erreur

quelle serait la bonne syntaxe pour faire cela ?

Merci pour vos conseils,
Stéphane
Publicado el 03,marzo 2020 - 17:23
Bonjour

=> faire une procédure globale et y passer en paramétres l'alias + d'autres paramétres

bon devs
Miembro registrado
356 mensajes
Publicado el 03,marzo 2020 - 17:39
Bonjour,

Utilise ExecuteTraitement()

un truc du genre
Executetraitemen(alias_de_la_fenetre.chargement_des_données_client,trtProcedure,"CODECLIENT")


--
Francis MOREL
http://www.SoftProtect.fr
Publicado el 03,marzo 2020 - 18:22
merci,

en fait mon uuid de fenêtre en cours est dans une variable :
gsUUIDFenetreEnCours

j'ai essayé :
{gsUUIDFenetreEnCours}+=FEN_FICHE_CLIENT.RegardeSiFenetreModifiée()
{gsUUIDFenetreEnCours}+=FEN_FICHE_CLIENT.ChargementDonnéesClient(CLIEN.codclien)
>> je n'ai pas de message d'erreur, ma variable correspond bien a ma fenêtre ouverte en cours mais ma fiche client s'ouvre toujours dans la 1ere fiche client ouverte et ne prend pas en compte mon alias


sur le executetraitement, j'ai un problème de syntaxe, il faut mettre quoi a votre avis ?
ExécuteTraitement("{gsUUIDFenetreEnCours}+=FEN_FICHE_CLIENT".RegardeSiFenetreModifiée(),trtProcédure)
me donne une erreur de procédure qui n'existe pas...
Miembro registrado
356 mensajes
Publicado el 04,marzo 2020 - 14:07
Bonjour Stephane,

Ton code ne nous dit pas tout, il faudrait savoir comment et ou est déclarée puis initialisée la variable "gsUUIDFenetreEnCours" ...
Cependant plusieurs remarques :
- tu utilises des indirections (accolades) qui ne servent à rien, d'autant que sans le type on peut avoir des surprises
- point n'est besoin (voire peut-être même nuisible) de mettre "FEN_FICHE_CLIENT" dans le nom du traitement

Un simple :
ExécuteTraitement(gsUUIDFenetreEnCours+".RegardeSiFenetreModifiée",trtProcedure)
devrait faire l'affaire.
Et je peux te garantir que c'est bien, dans ce cas, la procédure de la fenêtre "gsUUIDFenetreEnCours" qui est utilisée.

Au besoin mets des traces et/ou des breakpoints dans le débogueur pour tester.
Maintenant peut-être as-tu un autre problème, en particulier avec l'enregistrement courant du fichier HF, si tu ne prends pas les précautions adéquates (voir Description fenêtre > Détail > Contexte independant) il n'y a qu'un seul enregistrement courant (et pas un par fenêtre);
Le mieux dans ce cas est de gérer tout cela par toi même (voir "SauvePosition") et au besoin de tester dans la débogueur.

Tiens nous au courant.

Bon dev.

--
Francis MOREL
http://www.SoftProtect.fr
Mensaje modificado, 04,marzo 2020 - 14:08
Publicado el 04,marzo 2020 - 15:23
!!!!! GENIAL !!!!!
:merci:

ça marche parfaitement !
enfin, depuis le temps que je me prenais la tête la dessus !

petite précision pour ceux qui vont relire ce post, si on a des paramètres a passer a la procédure, il faut écrire :

ExécuteTraitement(gsUUIDFenetreEnCours+".ChargementDonnéesClient", trtProcédure, CLIEN.codclien)

encore merci pour la solution