PB à toute heure et à tout moment. (à parcourir avec modération)

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 21-06-2011 10:46:57

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

Récupérer les propriétés d'un controle dans une expression

Bonjour, je ne retrouve pas ce tip...

Dans une DW, si j'ai par exemple une colonne col_1 qui a comme tag tag_1 et que je souhaite récupérer le tag dans une expression je peut faire  :

Code: pb

describe( 'col_1.tag' )

Mais comment le faire sans référencer le nom de la colonne ? Cette expression ne passe pas :

Code: pb

describe( 'this.tag' )

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

Hors ligne

 

#2 21-06-2011 11:16:11

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: Récupérer les propriétés d'un controle dans une expression

erasorz a écrit:

Bonjour, je ne retrouve pas ce tip...

Dans une DW, si j'ai par exemple une colonne col_1 qui a comme tag tag_1 et que je souhaite récupérer le tag dans une expression je peut faire  :

Code: pb

describe( 'col_1.tag' )

Mais comment le faire sans référencer le nom de la colonne ? Cette expression ne passe pas :

Code: pb

describe( 'this.tag' )

Bien sur que cela ne peut pas fonctionner puisque "this" est le pointeur sur une instance d'une classe donc rien à voir avec la syntaxe d'un objet datawindow dynamiquemùent interperété par la DW machine qui pour prendre une analogie  fonctionne comme un navigateur qui interpréte la syntaxe HTML.
Maintenant tout dépend le contexte d'utilisation pour récupérer le tag. Si c'est par exemple dans les routines événementielles clicked() ou itemchanged() tu peux utiliser dwo.name
Donc précises le contexte.

Dernière modification par Dadone (21-06-2011 11:18:43)

Hors ligne

 

#3 21-06-2011 11:19:18

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

Re: Récupérer les propriétés d'un controle dans une expression

je ne connais pas de possibilité pour faire un "this" en DWExpression, par contre tu peux utiliser l'id de la colonne plutôt que le nom, mais c'est pas ce que tu cherches.

Code: pb

describe('#1.tag')

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

www.ngs.ma

Hors ligne

 

#4 21-06-2011 11:25:27

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

Re: Récupérer les propriétés d'un controle dans une expression

Dadone a écrit:

Bien sur que cela ne peut pas fonctionner puisque "this" est le pointeur sur une instance d'une classe donc rien à voir avec la syntaxe d'un objet datawindow dynamiquemùent interperété par la DW machine qui pour prendre une analogie  fonctionne comme un navigateur qui interpréte la syntaxe HTML.
Maintenant tout dépend le contexte d'utilisation pour récupérer le tag. Si c'est par exemple dans les routines événementielles clicked() ou itemchanged() tu peux utiliser dwo.name
Donc précises le contexte.

Ok bien sûr. J'avais mis 'this' mais ça aurait pu être un autre mot clé qui permettait cela...
Il s'agit d'un contexte purement expression conditionnelle dans les propriétés des DW. (pour factoriser du code)


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

Hors ligne

 

#5 21-06-2011 11:28:44

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: Récupérer les propriétés d'un controle dans une expression

erasorz a écrit:

Dadone a écrit:

Bien sur que cela ne peut pas fonctionner puisque "this" est le pointeur sur une instance d'une classe donc rien à voir avec la syntaxe d'un objet datawindow dynamiquemùent interperété par la DW machine qui pour prendre une analogie  fonctionne comme un navigateur qui interpréte la syntaxe HTML.
Maintenant tout dépend le contexte d'utilisation pour récupérer le tag. Si c'est par exemple dans les routines événementielles clicked() ou itemchanged() tu peux utiliser dwo.name
Donc précises le contexte.

Ok bien sûr. J'avais mis 'this' mais ça aurait pu être un autre mot clé qui permettait cela...
Il s'agit d'un contexte purement expression conditionnelle dans les propriétés des DW. (pour factoriser du code)

Désolé, je ne comprends toujours pas ce que tu veux faire exactement.

Hors ligne

 

#6 21-06-2011 11:43:52

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

Re: Récupérer les propriétés d'un controle dans une expression

Dadone a écrit:

erasorz a écrit:

Dadone a écrit:

Bien sur que cela ne peut pas fonctionner puisque "this" est le pointeur sur une instance d'une classe donc rien à voir avec la syntaxe d'un objet datawindow dynamiquemùent interperété par la DW machine qui pour prendre une analogie  fonctionne comme un navigateur qui interpréte la syntaxe HTML.
Maintenant tout dépend le contexte d'utilisation pour récupérer le tag. Si c'est par exemple dans les routines événementielles clicked() ou itemchanged() tu peux utiliser dwo.name
Donc précises le contexte.

Ok bien sûr. J'avais mis 'this' mais ça aurait pu être un autre mot clé qui permettait cela...
Il s'agit d'un contexte purement expression conditionnelle dans les propriétés des DW. (pour factoriser du code)

Désolé, je ne comprends toujours pas ce que tu veux faire exactement.

l’équivalent de

Code: html

<span onclick="javascript:alert( this.innerHMTML )">
...
</span>

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

www.ngs.ma

Hors ligne

 

#7 21-06-2011 11:56:57

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

Re: Récupérer les propriétés d'un controle dans une expression

Dadone a écrit:

erasorz a écrit:

Il s'agit d'un contexte purement expression conditionnelle dans les propriétés des DW. (pour factoriser du code)

Désolé, je ne comprends toujours pas ce que tu veux faire exactement.

Je souhaite utiliser le tag pour indexer des contrôles identiques (colonnes) dans une DW. Ainsi j'aurai une expression de propriété de forme fonction(tag) qui sera la même pour chaque controle au lieu d'avoir fonction1(), fonction2()...

NB : je peux aussi m'en tirer différemment en récupérant le nom de colonne, ce qui est peut-être possible (?) (autrement qu'un : describe( 'this.name' ) )


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

Hors ligne

 

#8 21-06-2011 12:18:23

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

Re: Récupérer les propriétés d'un controle dans une expression

est-ce qu'il est envisageable de construire tes dwexpressions au moment de l'execution (ex: dans un constructor ) ?
si oui, tu peux boucler sur tes colonnes et récupérer le nom via

Code: pb

 ls_name = describe("#"+string(ll_col_id)+".name") 

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

www.ngs.ma

Hors ligne

 

#9 21-06-2011 12:22:03

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

Re: Récupérer les propriétés d'un controle dans une expression

erasorz a écrit:

Il s'agit d'un contexte purement expression conditionnelle dans les propriétés des DW. (pour factoriser du code)

c'est vrai que c'est pas super clair 

je reprécise : tout doit se faire dans le DWO (pas de script, sinon je préfère maintenir dans le DWO)


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

Hors ligne

 

#10 21-06-2011 12:31:45

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

Re: Récupérer les propriétés d'un controle dans une expression

alors dans ce cas, je crais qu'il n'y ait d'autre solution que de "hardcoder" le nom de ton dwo dans les expressions des propriétés en question, jusqu'à la 12.5, il n'y a pas d'équivalent à 'this' sur les dwexpression
en 12.5, ils ont quand même ajouter des bidouilles qui permettrait de choper le dwo courrant (vu sur des computes pour y faire du ownerdraw)


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

www.ngs.ma

Hors ligne

 

#11 21-06-2011 12:32:37

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: Récupérer les propriétés d'un controle dans une expression

erasorz a écrit:

Je souhaite utiliser le tag pour indexer

--> cela veut dire quoi "indexer" dans ce contexte, on peut traduire par "factoriser" ?

erasorz a écrit:

des contrôles  identiques  (colonnes)

on peut traduire par "des traitements identiques sur les colonnes d'un objet  datawindow" comme un tri par exemple ? --> donne un exemple.

Je commence juste à appréhender la problématique mais pas assez pour savoir si il y a une réponse ou non...

Tu veux créer quoi ? --> un computed field qui donne un expression dont le tag d'une colonne est un argument ?
Associer une expression à une colonne ?
Y a t'il un événement d'éclencheur pour la traduction de l'expression que tu veux coder ?

Dernière modification par Dadone (21-06-2011 12:56:32)

Hors ligne

 

#12 21-06-2011 13:46:48

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

Re: Récupérer les propriétés d'un controle dans une expression

C'est purement statique, pour schématiser :  dans le DWO en plus des autres données, j'ai n colonnes similaires (colonne1,colonne2,...).

Je souhaite positionner ces colonnes via une expression unique pour toute : propriété X = fonction( i ) où i est le n° de la colonne.

Avec cet exemple de fonction : X = a*i + b
pour le moment je suis obligé de faire :
Colonne 1 : X = a + b
Colonne 2 : X = a*2 + b
etc

C'est pourquoi, pour connaître i dans l'expression de X, j'avais pensé à : soit extraire i du nom de la colonne, soit le mettre en tag et récupèrer le tag.

But : En cas de modification de la fonction, je n'en ai qu'une à maintenir.


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

Hors ligne

 

#13 21-06-2011 14:36:57

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: Récupérer les propriétés d'un controle dans une expression

Ah c'est beaucoup plus clair !
Il fallait commencer par cette description !

Dernière modification par Dadone (21-06-2011 16:25:06)

Hors ligne

 

#14 21-06-2011 16:25:27

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: Récupérer les propriétés d'un controle dans une expression

A priori,  la fonction peut être unique mais pas la syntaxe de l'argument qu'on lui passe (je comprend mieux maintenant le "this").
En effet la syntaxe de l'argument est conditionné au nom de la colonne qui ne peut pas être remplacé par un terme générique.
X = fonction (integer(describe("nom_col.id"))) pour la propriété X d'une colonne donnée (nommée "nom_col") ou Id est le n° de la colonne.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22