Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
J'ai un problème concernant l'alimentation de l'objet POWEROBJECTPARM :
n_cst_parms ln_parms
If IsValid(this.powerobjectparm) Then
If this.powerobjectparm.className() = 'n_cst_parms' Then
ln_parms = this.powerobjectparm
End if
End if
Return ln_parms
Le problème que l'objet ln_parms ne s'alimente pas même si l'utilisateur sélectionne une ligne dans l'écran appelé.
Pour info, ce traitement existe dans un objet ancêtre et il marche pour tous les autres écrans mais ça marche pas dans mon nouvel écran en sachant que j'envoie les paramètres en entrée comme il faut avant l'ouverture de l'écran appelé.
Merci d'avance
Hors ligne
this.powerobjectparm ça vient d'où ? C'est pas plutôt message.powerobjectparm ?
Hors ligne
Bonjour,
Hors ligne
Tout d'abord je te remercie pour ta réponse.
C'est parce que je suis dans l'user object n_msg.
Pour info, j'ai testé en faisant :
n_cst_parms ln_parms
If IsValid(message.powerobjectparm) Then
If message.powerobjectparm.className() = 'n_cst_parms' Then
ln_parms = message.powerobjectparm
End if
End if
Return ln_parms
mais ça marche pas.
Hors ligne
n_msg, c'est les PFC/PFE ça, donc tu veux dire que tu es dans un objet hérité de n_msg je suppose.
Toutefois, je ne vois pas de variable powerobjectparm au niveau n_msg (créé dans votre framework ?).
Sinon, sur n_msg, il y a une fonction set (of_setpowerobjectparm) et get (of_getpowerobjectparm) pour le powerobjectparm. Il faudrait plutôt passer par celles-ci.
Toutefois, l'initialisation se fera certainement sur base de message.powerobjectparm à un moment donné et là on peut avoir des surprises... Où initialises-tu ton this.powerobjectparm ?
Mets un max de traces dans ton code pour essayer de comprendre.
Hors ligne
Bonjour,
Je reviens un peu tard sur ce sujet mais mieux vaut tard que jamais.
Pour info l'objet N_MSG des PFC est dérivé de l'objet MESSAGE lequel est un objet global. ( Voir les additional properties de l'objet application : Onglet Variable Type)
L'objet MESSAGE ( donc N_MSG) est alimenté automatiquement dès lors que tu utilises une méthode passant ou retournant des paramères ( ex OpenWithParm , OpenSheetWithPARM, CloseWithReturn ..)
Ce que je comprend pas, c'est que tu dis que ton code est dans l'objet n_msg. Mais tu l'as mis dans quel evt ou quelle fonction.
Si tu l'as mis dans une fonction de l'objet N_MSG alors il te faut appeler cette méthode pour récupérer son contenu, sinon si c'est dans un evt je ne vois pas comment il pourrait être déclenché sauf si tu as un framework qui le fait de manière automatique.
Cdt
Yanis
Hors ligne