|
| 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.frMensaje modificado, 04,marzo 2020 - 14:08 |
| |
| |
| | | |
|
| | |
| |
| Publicado el 04,marzo 2020 - 15:23 |
!!!!! GENIAL !!!!!

ç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 |
| |
| |
| | | |
|
| | | | |
| | |
|