Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 26-11-2012 08:59:03

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

[RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

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

 

#2 26-11-2012 09:08:29

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

Salut,

tu peux nous montrer le code que tu utilises actuellement et nous donner l'erreur renvoyée par PB ?


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#3 26-11-2012 09:25:20

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

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

Code: pb

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

 

#4 26-11-2012 09:32:24

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

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 ?


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 26-11-2012 10:00:42

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

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

 

#6 26-11-2012 10:28:47

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

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à ?


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

#7 26-11-2012 10:40:52

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

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 ?


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#8 26-11-2012 10:44:53

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

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

 

#9 26-11-2012 10:58:21

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

tu pourrais peut-être transformer ton "choose case" en quelque chose comme çà :

Code: pb

    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)

https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#10 26-11-2012 11:03:34

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

Nikel xlat !!

Ca marche du feu de dieu !!

Merci

Hors ligne

 

#11 26-11-2012 12:18:51

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

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


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#12 26-11-2012 12:20:22

Sebou  
Membre Power Geek
Lieu: Villeneuve-sur-Lot
Date d'inscription: 21-12-2007
Messages: 189
Pépites: 1,787
Banque: 13,693,461,510

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

Ah ok...Merci aussi alors rincevent

Hors ligne

 

#13 26-11-2012 13:03:00

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: [RESOLU] Comment faire plusieurs OpenUserObject d'un même objet

de rien

Dernière modification par rincevent (26-11-2012 13:03:08)


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22