Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
Je souhaite passer un certain type de fenêtre à une fonction, ce type de fenêtre va être différent
en fonction des cas de figure.
En effet, je voudrais passer à ma fonction f_xxx, tantôt la fenêtre w_aaa, tantôt, la fenêtre w_bbb
ou bien encore w_ccc.
Comment puis-je déclarer un tel paramêtre dans la fonction f_xxx, sachant que si je déclare un
paramêtre de type window, cela sera incorrect ? Par ailleurs, si je déclare un argument de type
w_aaa, cela va fonctionner pour la fenêtre w_aaa mais pas pour les autres (w_bbb et w_ccc).
Comment puis-je faire ?
Par avance, merci.
Pour info, je suis sous PB9.
Doctor Z.
Hors ligne
Salut,
tout dépend de ce que tu vas faire dans la fonction.
tu peux utiliser un type window et interroger la classe de ton objet dans la fonction, petit exemple:
//function f_xxxx( window aw_primitive ) choose case aw_primitive.classname() case "w_aaa" // accés à une propriété connaissant le type réel w_aaa lw_une_instance_aaa lw_une_instance_aaa = aw_primitive lw_une_instance_aaa.is_une_proprieté = "test" lw_une_instance_aaa.wf_une_fonction_aaa( 'blablabla' ) case "w_bbb" // appel dynamique à une méthode aw_primitive.DYNAMIC wf_une_fonction( "test") case else messagebox("f_xxxx", aw_primitive.classname() + " n'est ni w_aaa, ni w_bbb !") end choose
Maintenant si c'est pour créer dynamiquement une instance de fenetre tu peux utiliser la fonction system open.
Hors ligne
Bonsoir,
Avant tout chose merci pour ta réponse.
En fait, je souhaite faire une fonction générique qui permette d'ouvir une fenêtre particulière en fonction
de l'endroit où cette même fonction f_xxx.
J'avais d'abord imaginer un système avec un CHOOSE CASE et en fonction de la fenêtre, dans laquelle
elle est appelé, j'aurai ouvert w_aaa, w_bbb ou bien w_ccc.
M'étant que cela pourrait vite devenir relativement complexe (si j'ai 30 fenêtre, ça va commencer à
devenir pénible pour ce retrouver dans le CHOOSE CASE de la fonction f_xxxx), du coup c'est pour cela
que je demandais s'il était possible d'avoir un type de fenêtre dynamique.
Déjà je vais essayer ce que tu m'as donner, je vais tester cela pour voir ce que cela donne.
Encore une fois merci.
Doctor Z.
Hors ligne
Pour ouvrir une fenêtre dynamiquement, c'est déjà prévu.
PB a écrit:
window w_to_open
string s_w_name
..
Open(w_to_open, s_w_name)
D'autre part, t u devrait avoir un ancêtre commun afin de pouvoir passer facilement des messages à tes fenêtres
Hors ligne
j'appuis la remarque de shahin surtout si le nombre de fenêtre doit évoluer, utiliser du code générique pourra nécessiter quelques aménagement de code mais ponctuellement, tandis que l'utilisation du "choose case" n'est qu'une bouée de secours, à éviter pour traverser la mer.
Hors ligne
xlat a écrit:
j'appuis la remarque de shahin surtout si le nombre de fenêtre doit évoluer, utiliser du code générique pourra nécessiter quelques aménagement de code mais ponctuellement, tandis que l'utilisation du "choose case" n'est qu'une bouée de secours, à éviter pour traverser la mer.
Bonjour à tous,
Oui effectivement j'ai du code générique et si un jour je rajoute une fenêtre, je n'aurai qu'à invoquer la fonction générique
et rien de plus.
Je méconnaissai totalement cette autre syntaxe du Open ; on se demande à quoi peuvent bien servir les choses jusqu'au
jour où nous en avons besoin
Merci pour votre aide, je clos le sujet.
Doctor Z.
Hors ligne