Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Bonjour à tous,
J'ai créé une sorte de menu contenant des userobjects en lieu et place des icônes.
Le soucis est que lorsque je souhaite ouvrir plusieurs fois le même objet (ex : un séparateur), PB refuse de me l'ouvrir car il doit détecter que je l'ai déjà ouvert.
Avez-vous une idée de comment je dois faire svp ?
Merci
PS : je suis en PB 12.5
Dernière modification par Sebou (26-11-2012 11:03:49)
Hors ligne
Salut,
tu peux nous montrer le code que tu utilises actuellement et nous donner l'erreur renvoyée par PB ?
Hors ligne
Voici mon script.
Lors de la première création de u_bouton_separator, ll_ret vaut 1 mais lorsque je souhaite ajouter un autre séparateur, ll_ret vaut -1
long ll_x, ll_dernier = 0, ll_button long ll_ret ll_dernier = UpperBound( iuo_tab_bouton ) IF ll_dernier > 0 THEN ll_x = iuo_tab_bouton[ll_dernier].x + iuo_tab_bouton[ll_dernier].width + 30 ELSE ll_x = 15 END IF ll_button = ll_dernier + 1 CHOOSE CASE as_bouton CASE "actes" ll_ret = openuserobject( u_bouton_actes, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_actes CASE "alerte" ll_ret = openuserobject( u_bouton_alerte, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_alerte CASE "batiment" ll_ret = openuserobject( u_bouton_batiment, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_batiment CASE "cadenas" ll_ret = openuserobject( u_bouton_cadenas, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_cadenas CASE "calendrier" ll_ret = openuserobject( u_bouton_calendrier, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_calendrier CASE "deplacer" ll_ret = openuserobject( u_bouton_deplacer, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_deplacer CASE "detail" ll_ret = openuserobject( u_bouton_detail, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_detail CASE "dossier" ll_ret = openuserobject( u_bouton_dossier, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_dossier CASE "dossier_bloque" ll_ret = openuserobject( u_bouton_dossier_bloque, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_dossier_bloque CASE "dossier_modif" ll_ret = openuserobject( u_bouton_dossier_modif, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_dossier_modif CASE "editions_resa" ll_ret = openuserobject( u_bouton_editions_resa, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_editions_resa CASE "excel" ll_ret = openuserobject( u_bouton_excel, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_excel CASE "fleche_droite" ll_ret = openuserobject( u_bouton_droite, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_droite CASE "filtrer" ll_ret = openuserobject( u_bouton_filtrer, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_filtrer CASE "annul_filtre" ll_ret = openuserobject( u_bouton_filtrer_annuler, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_filtrer_annuler CASE "fleche_gauche" ll_ret = openuserobject( u_bouton_gauche, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_gauche CASE "horloge" ll_ret = openuserobject( u_bouton_horloge, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_horloge CASE "imprimer" ll_ret = openuserobject( u_bouton_imprimer, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_imprimer CASE "information" ll_ret = openuserobject( u_bouton_information, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_information CASE "intervention" ll_ret = openuserobject( u_bouton_intervention, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_intervention CASE "liste" ll_ret = openuserobject( u_bouton_liste, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_liste CASE "medecin" ll_ret = openuserobject( u_bouton_medecin, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_medecin CASE "nuit" ll_ret = openuserobject( u_bouton_nuit, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_nuit CASE "pa" ll_ret = openuserobject( u_bouton_pa, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_pa CASE "parametrage" ll_ret = openuserobject( u_bouton_parametrage, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_parametrage CASE "planning_heure" ll_ret = openuserobject( u_bouton_planning_heure, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_planning_heure CASE "prescription" ll_ret = openuserobject( u_bouton_prescription, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_prescription CASE "presents" ll_ret = openuserobject( u_bouton_presents, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_presents CASE "quitter" ll_ret = openuserobject( u_bouton_quitter, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_quitter CASE "raffraichir" ll_ret = openuserobject( u_bouton_raffraichir, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_raffraichir CASE "rechercher" ll_ret = openuserobject( u_bouton_rechercher, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_rechercher CASE "rejet_report" ll_ret = openuserobject( u_bouton_rejet_report, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_rejet_report CASE "ressources_humaines" ll_ret = openuserobject( u_bouton_ressources_humaines, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_ressources_humaines CASE "separator" ll_ret = openuserobject( u_bouton_separator, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_separator CASE "suspendre" ll_ret = openuserobject( u_bouton_suspendre, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_suspendre CASE "travaux" ll_ret = openuserobject( u_bouton_travaux, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_travaux CASE "trier" ll_ret = openuserobject( u_bouton_trier, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_trier CASE "valider" ll_ret = openuserobject( u_bouton_valider, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_valider CASE "verrouiller" ll_ret = openuserobject( u_bouton_verrouiller, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_verrouiller CASE "zoom_arriere" ll_ret = openuserobject( u_bouton_zoom_arriere, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_zoom_arriere CASE "zoom_avant" ll_ret = openuserobject( u_bouton_zoom_avant, ll_x, 4) iuo_tab_bouton[ll_button] = u_bouton_zoom_avant CASE ELSE return 1 END CHOOSE IF ll_ret = 1 THEN iuo_tab_bouton[ll_button].iuo_parent = auo_toolbar iuo_tab_bouton[ll_button].uf_setname(as_bouton) END IF return ll_ret
Hors ligne
Bonjour, comment tu déclares iuo_tab_bouton[] ? par un objet ancêtre ?
Si tu fais juste les openuserobject() ça passe ?
EDIT : ah en fait c'est le openuserobject qui te renvois -1... est-ce le cas pour tous les types ?
Hors ligne
erasorz a écrit:
Bonjour, comment tu déclares iuo_tab_bouton[] ? par un objet ancêtre ?
Si tu fais juste les openuserobject() ça passe ?
EDIT : ah en fait c'est le openuserobject qui te renvois -1... est-ce le cas pour tous les types ?
Oui, c'est bien le openuserobject qui me renvoie -1, peu importe le "type de bouton" que je souhaite ouvrir.
iuo_tab_bouton[] est un tableau de u_bouton_ancetre, ancêtre de tous les userobject bouton
Hors ligne
Bonjour,
sur la page ici on peut lire
la doc a écrit:
If you call Syntax 1 twice to open the same user object, PowerBuilder activates the user object twice; it does not open two instances of the user object.
Il existe une seconde syntaxe (voir la doc sur la page dont le lien est ci-dessus) pour le OpenUserObject : OpenUserObject ( userobjectvar, userobjecttype {, x, y } ).
Peut-être essayer celle-là ?
Hors ligne
C'est parceque tu essaye de faire plus d'un openuserobject sur une même variable u_bouton_separator, tu vas me dire que tu n'utilises pas de variable mais un type et je vais te répondre que c'est PB qui te fait la conversion magique sans que tu t'en rendes comptes, du coup ça marche bien la première fois mais pas les suivantes.
Pour que ça marche il faudrait que tu ait un tableau de variables de type u_bouton_separator et que dans l'openuserobject tu utilises la première variable pas encore utilisée dans ce tableau.
suis-je clair ?
Hors ligne
rincevent a écrit:
C'est parceque tu essaye de faire plus d'un openuserobject sur une même variable u_bouton_separator, tu vas me dire que tu n'utilises pas de variable mais un type et je vais te répondre que c'est PB qui te fait la conversion magique sans que tu t'en rendes comptes, du coup ça marche bien la première fois mais pas les suivantes.
Pour que ça marche il faudrait que tu ait un tableau de variables de type u_bouton_separator et que dans l'openuserobject tu utilises la première variable pas encore utilisée dans ce tableau.
suis-je clair ?
Euhhh oui et non...je comprends le début de ton explication (le fait qu'il n'ouvre pas 2 fois le meme objet)...mais je ne vois pas comment pallier à cela :x
Hors ligne
tu pourrais peut-être transformer ton "choose case" en quelque chose comme çà :
string ls_class ls_class = "u_bouton_"+as_bouton iuo_tab_bouton[ll_button] = create using ls_class ll_ret = openuserobject( iuo_tab_bouton[ll_button], ls_class, ll_x, 4)
Hors ligne
Nikel xlat !!
Ca marche du feu de dieu !!
Merci
Hors ligne
mon malheur ça, pas arriver à me faire comprendre, en gros j'ai esasyé de t'expliquer en Français ce que xlat t'as montré en code...
Hors ligne
Ah ok...Merci aussi alors rincevent
Hors ligne
de rien
Dernière modification par rincevent (26-11-2012 13:03:08)
Hors ligne
Pages: 1