Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour
Comme vous avez pour créer un datwindow dynamiquement dans power on peux utiliser la fonction OpenUserObject mais cette dernière ne marche pas dans un user object càd le système ne la connaît pas à l’intérieur d’un user object
Avez-vous une solution pour remédier à ce problème
Hors ligne
Bonjour, je ne cerne pas vraiment le problème. Peux-tu poster le code utilisé ?
Hors ligne
J’ai crée un user object uo_user ensuite j’ai voulu créer dans ce dernier (dans un event) une datawindow dynamiquement en utilisant openuserobject
Dw_data = create datawindow OpenUserObject(Dw_data,"datawindow",100,200) Dw_data.Create (ls_syn)
Le système me retourne unknown function openuserobject
Hors ligne
OpenUserObject() c'est une méthode des objets fenêtre, ça n'existe pas pour les userobjects.
Ce qu'il est possible de faire c'est d'appeler OpenUserObject() sur la fenêtre parente de uo_user.
Edit: Remarques
- comme dit dans la doc, il ne faut pas oublier le CloseUserObject() à la fermeture de la fenêtre, sans ça les objets créés dynamiquement ne sont pas libérés
- j'ai souvenir d'un usage problématique de OpenUserObject() sur une fenêtre où on voulait créer le userobject dans une page d'un tab control : pour que le changement de page se gère correctement, il avait fallu jouer avec le SetParent() de l'API windows. Une fois le userobject créé, il fallait faire un SetParent sur la tabpage concernée, et avant de tout libérer, il fallait refaire le SetParent sur la fenêtre pour que tout se passe bien.
Dernière modification par seki (16-05-2012 13:22:07)
Hors ligne
nn je dois pas l'appeler ailleurs car j'en ai besoin dans un process qui s'execute en parallele (thread)
Hors ligne
seki a écrit:
Ce qu'il est possible de faire c'est d'appeler OpenUserObject() sur la fenêtre parente de uo_user.
infopower a écrit:
nn je dois pas l'appeler ailleurs car j'en ai besoin dans un process qui s'execute en parallele (thread)
Ce que je voulais dire, c'était de faire
fenetre_parent_de_uo_user.OpenUserObject(Dw_data)
Puisqu'on ne peut pas faire
uo_user.OpenUserObject(Dw_data)
Hors ligne