Powerbuilder pour les completement Geeks !

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 04-03-2014 14:00:17

remypb  
Membre Geek
Date d'inscription: 19-04-2013
Messages: 65
Pépites: 262
Banque: 0

Passage Variable d'une fenêtre à l'autre

Bonjour

Pour faire simple

J'ai une fenêtre, appelé w_liste, avec un Tabpage de 3 onglets. Le tabpage principal est appelé <tab_main>
<tab_main> est hérité d'un user object ancetre appelé <tab_anc>
Ce <tab_anc> est composé de 3 tabpages dont <tab_action>.
<tab_action> est hérité d'un user object ancêtre appelé <u_tabp_act> qui contient la dw liste
C'est donc sur cet objet <u_tabp_act> que se fait le retrieve de ma liste et que je gére le double clic

Lorsque je double clique sur une ligne sur l'onglet Tab1 de la fenêtre , un écran détail w_detail s'ouvre avec les données correspondantes à la ligne

Il n'y a pas de retrieve sur w_detail, surement un sharedata enfoui dans les pfc ou ancetres mais vu la complexité des pfc et de l'empilement je ne l'ai pas cherché
Les 2 dw de w_liste et w_detail ont le même Select (mais pas le même where)

J'ai une variable de type date, appelé v_dt1, que j'ai déclaré sur <u_tabp_act>.
Elle est initialisée lors du double clic

je voudrai récupérer dans une variable de la fenêtre w_detail la valeur de la variable déclarée et initialisée dans la fenêtre w_liste

J'ai essayé de créer une instance de la fenêtre w_liste et de récupérer la variable v_dt1 mais cela ne donne rien

Code:

w_liste   w_t1
IF not isvalid(w_lt1) THEN 
  w_t1 = create w_liste
END IF
v_dt1= w_t1.tab_main.tab_action.v_dt1

J'ai essayé d'appeler directement la fenêtre mais ca provoque une erreur Null object

Code:

v_dt1= w_liste.tab_main.tab_action.v_dt1

vu que la dw est sur u_tabp_act je dois declarer la variable et l'initialiser dans cet objet.
Et comme tab_main n'est pas hérité uniquement de u_tabp_act (mais contient l'heritage de tab_action) je ne peux pas faire appel à la variable

je ne veux pas modifier les ancêtres ou les pfc alors je sais plus comment faire
qu'est ce qui manque ou que dois je rajouter

je pourrai déclarer la variable en global mais je préfererai une solution plus rigoureuse


merci pour votre aide

Hors ligne

 

#2 05-03-2014 10:15:15

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: Passage Variable d'une fenêtre à l'autre

L'ouverture de ta w_detail se passe par un open simple?
Si c'est le cas, il suffit pour moi de faire un openwithparm à la place et de balancer ta variable à la w_detail.
Pour ça tu cast la date en format string car seul les types String, Numeric et PowerObject sont admis en tant que type des paramètre.

Dernière modification par Van (05-03-2014 10:17:14)


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#3 05-03-2014 10:20:49

remypb  
Membre Geek
Date d'inscription: 19-04-2013
Messages: 65
Pépites: 262
Banque: 0

Re: Passage Variable d'une fenêtre à l'autre

Merci mais le open de la fenêtre est fait dans l'ancêtre que je ne veux pas modifier et je crois qu'il utilise déjà un openwithparm et envoie un tableau de data que je ne contrôle pas et que je ne veux pas modifier c'est trop sensible

Ma question en plus simple est :

comment récuperer la valeur d'une variable qui n'est pas déclarée dans un objet appelant mais dans un objet ancêtre d'un des composants de cette fenêtre appelante ????

Hors ligne

 

#4 05-03-2014 10:27:13

Van  
Bienfaiteur du site
Award: bf
Lieu: mouvaux
Date d'inscription: 19-03-2013
Messages: 125
Pépites: 673
Banque: 41

Re: Passage Variable d'une fenêtre à l'autre

Si éventuellement tu est en fenêtre child ou pop-up pour ta w_detail et que lors de l'openwithparm le parent a été déclaré comme étant ta fenêtre w_liste,
une variable public d'instance à w_liste te permettrait un accès à la donné de cette façon dans l'event open de ta w_detail.

Code: pb

w_liste w_parent
date d_parametreDate
w_parent = this.getparent()
d_parametreDate = w_parent.id_dateParametre

Dernière modification par Van (05-03-2014 10:27:50)


Tant que ça bouge c'est pas mort, dans le doute frappe encore!
Ni dieu ni maître, sauf maître Kanter!

Hors ligne

 

#5 07-03-2014 09:34:30

remypb  
Membre Geek
Date d'inscription: 19-04-2013
Messages: 65
Pépites: 262
Banque: 0

Re: Passage Variable d'une fenêtre à l'autre

Mais la variable n'est pas déclarée dans w_liste mais dans un ancêtre d'un de ses composants

La fenetre w_liste a un de ses objets qui est un user object tab.  Ce tab est composé de 3 user objects tabpage

Et la variable est déclarée dans l'ancêtre d'un des 3 tabpages. J'ai déclaré ma variable sur le user object qui gére le retrieve de la liste de cet onglet

Il faudrait déjà que j'arrive à récupérer sur w_liste la valeur de cette variable

Dernière modification par remypb (07-03-2014 09:37:40)

Hors ligne

 

#6 07-03-2014 10:09:42

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

Re: Passage Variable d'une fenêtre à l'autre

w_page.le_tab.le_tabpage.la_variable ?


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

Hors ligne

 

#7 07-03-2014 11:11:28

remypb  
Membre Geek
Date d'inscription: 19-04-2013
Messages: 65
Pépites: 262
Banque: 0

Re: Passage Variable d'une fenêtre à l'autre

j'ai vérifié c'est bien un openwithparm qui ouvre ma fenetre detail

mais quand je veux récupérer ma variable qui est dans l'ancêtre du tabpage (code ci dessous)

Code: pb

// Declaration en instance de la fenetre liste appelante
w_form_action w_parent        

// event OPEN 
w_parent = this.getparent()

idt_create_test = w_parent.tab_main.tabpg_conditionaction.idt_create_c1

// tab_main = objet onglet principal 
// tabpg_conditionaction = onglet sur lequel est fait le double clic
// idt_create_c1 = variable date déclarée en public sur le user object de la dw et du double clic


j'ai le msg d'erreur : Null Object reference ..... sur la ligne idt_create_test =

faut il déclarer une instance de la fenêtre parent ?

j'aurai une solution en déclarant ma variable date en global sur l'appli mais c'est pas très clean

Dernière modification par remypb (07-03-2014 11:22:08)

Hors ligne

 

#8 07-03-2014 12:54:03

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

Re: Passage Variable d'une fenêtre à l'autre

tabpg_conditionaction est du type de ton user object ? ou alors le user object est déposé dans tabpg_conditionaction ?


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

Hors ligne

 

#9 07-03-2014 13:44:37

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: Passage Variable d'une fenêtre à l'autre

Ce ne serait pas this.parentwindow dont tu aurais besoin ? Parce que this.getparent() c'est plutôt pour récupérer des contrôles parent, pas une fenêtre. (j'ai lu le fil très en diagonale... )


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#10 07-03-2014 14:28:46

remypb  
Membre Geek
Date d'inscription: 19-04-2013
Messages: 65
Pépites: 262
Banque: 0

Re: Passage Variable d'une fenêtre à l'autre

erasorz : tabpg_conditionaction est un user object hérité d'un autre user object ce dernier contient la dw sur lequel je gere le double clic

j'ai résolu mon probleme en faisant 2 choses
- ajouter une variable date a l'objet passé en paramètre dans le openwithparm (dans l'ancetre de la dw liste)
- affecter cette variable date avec la valeur de la date recuperée dans le doubleclic de ma dw
- recup dans la fenetre detail de cette variable dans une variable d'instance

je suis interessé a avoir vos avis et vos autres solutions

merci en tt cas de votre solidarité

Hors ligne

 

#11 11-03-2014 16:20:41

Yanis  
Modérateur
Lieu: paris
Date d'inscription: 16-06-2010
Messages: 349
Pépites: 665
Banque: 150

Re: Passage Variable d'une fenêtre à l'autre

Salut,

     Celà me parait être la meilleure solution.  J'aurais quand même cherché si dans l'objet passé en paramètre il n'existe pas déjà ( soit un tableau, soit une structure ...) une variable qui pouvait prendre ma date. ( Celà doit également te permettre de prendre en main le framework avec lequel tu travaille )

   Toutes les autre solutions que tu as tenté d'utiliser me semblent trop être liées à l'objet sur lequel tu doubleclique. ( Sachant que pour certaines elles étaient vouées à l'échec )

remyPB a écrit:

exemple Code:

w_liste   w_t1
IF not isvalid(w_lt1) THEN
  w_t1 = create w_liste
END IF
v_dt1= w_t1.tab_main.tab_action.v_dt1

Tu créé une variable de type fenêtre et tu lui affecte une variable de type date. Je ne vois pas comment celà peut fonctionner.


remyPB a écrit:

Code:

v_dt1= w_liste.tab_main.tab_action.v_dt1

Ce que tu as essayé c'est visiblement d'utiliser une variable globale qui porterait le nom w_liste et qui contiendrait le pointeur sur ta fenêtre liste.
C'est ce que fait Powerbuilder si tu utilise la syntaxe suivante pour l'open exemple : Open( w_liste ). Dans ce cas PB déclare une variable globale qui s'appelle w_liste et qui est valide tant que la fenêtre est ouverte
L'open de ta fenêtre liste doit être effectué à l'aide d'une variable locale ( voir d'instance pour effectuer son ouverture). Dans ce cas il n'existe pas de variable w_liste exemple
w_liste    lw_temp
open(lw_temp )
Dans ce cas la variable w_liste n'existe pas et le pointeur est contenu dans lw_temp. Cette syntaxe permet la multiInstanciation des objets.





Cdt
Yanis

Hors ligne

 

#12 18-03-2014 15:26:31

Dadone  
Membre Power Geek
Lieu: Avon (Seine et Marne)
Date d'inscription: 19-02-2007
Messages: 252
Pépites: 985
Banque: 0
Site web

Re: Passage Variable d'une fenêtre à l'autre

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22