Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

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 03-01-2012 10:25:38

SBM  
Membre
Date d'inscription: 03-01-2012
Messages: 8
Pépites: 31
Banque: 0

Rendre visible un contrôle "LINE" créé dynamiquement.

Bonjour à tous,

Comme je suis nouveau ici, avant ma question, une rapide présentation :

43 ans, Bordelais d’adoption, et bidouilleur PB à mes heures.
En fait, après avoir été technicien bureautique, je me suis intéressé à améliorer ou inventer les outils qui manquaient à mon boulot quotidien.
Après m'être essayé au scripts DOS, puis au C et C++, j'ai fini avec PowerBuilder, grâce à une mini formation que j'ai pu avoir il y a ... (vachement longtemps !)

Depuis 10 ans, je fais de la production, essentiellement en charge des transferts de fichiers dans la banque ou je travaille (CFT pour les connaisseurs.)
Et là encore, les outils d'exploit ne sont pas à la hauteur, j'essaie donc de faire les miens.

Bref, je suis un piètre programmeur, et donc beaucoup de questions !

Puis-je poser la première ?

Pour gérer une cartographie des serveurs de ma boîte, j'ai besoin de créer dynamiquement ces dits-serveurs (j'utilise un user object graphique) et je souhaite les lier entre-deux par des lignes
Donc, ces lignes doivent pouvoir être déplacées et redimensionnées.

Or, lorsque je « créé » une nouvelle ligne via CREATE, elle est bien instanciée, j’ai accès à ses propriétés, mais impossible de la rendre visible !

Ligne LINE
Ligne = CREATE LINE

Ah oui, j’utilise PowerBuilder 9.0 build 5507

Pouvez-vous m’aider ?

Merci d’avance

Hors ligne

 

#2 03-01-2012 10:33:13

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

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

Bonjour et

Je pense qu'il faut utiliser un OpenUserObject.

Sinon tu as aussi la solution de faire ça dans une datawindow, par exemple :

Code: pb

ls_create = 'create line(band=background x1="'+ls_x1+'"y1="'+ls_y1+'" x2="'+ls_x2+'" y2="'+ls_y2+'"tag="'+is_object+'" pen.style="0" pen.width="5" pen.color="8388608" pointer="cross!" name=newline background.mode="2" background.color="1073741824" ) '

dw_1.modify(ls_create)

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

Hors ligne

 

#3 03-01-2012 10:57:37

SBM  
Membre
Date d'inscription: 03-01-2012
Messages: 8
Pépites: 31
Banque: 0

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

Bonjoru erasorz !

Et merci pour ta réponse.
Je ne vois pas en fait comment gérer ma ligne avec un openUserObject.
j'ai déja tenté, mais difficile d'en modifier les attributs (de taille et placement)

Voilà la version actuelle, ou rien n'est dynamique :

http://i6.photobucket.com/albums/y203/SBM33/NightView.jpg

A chaque nouveau traitement de prod, je dois donc modifier et recompiler. Pas pratique, et surtout non paramétrable par mes collègues !
Donc, maintenant tout mon paraméatrge est en base, je créé mes Bloc dynamiquement, mais comment les relier !


je m'arrache les cheveux sur ce problème depuis des mois.

Hors ligne

 

#4 03-01-2012 11:30:50

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

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

Une solution qui marche : créer un custom visual (uo_line) qui contient une ligne (ln_line). Appeler un openuserobject sur une instance de uo_line.
Ensuite tu peux modifier les paramètres à ta guise :

Code: pb

uo_line lu_line

w_1.openuserobject( lu_line, 0, 0 )

lu_line.ln_line.beginx = 100
lu_line.ln_line.beginy = 100
lu_line.ln_line.endx = 500
lu_line.ln_line.endy = 500
lu_line.ln_line.linethickness = 50
lu_line.ln_line.linecolor = 10000

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

Hors ligne

 

#5 03-01-2012 12:49:11

SBM  
Membre
Date d'inscription: 03-01-2012
Messages: 8
Pépites: 31
Banque: 0

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

Ca semble l'idéal, mais avant que je me lance à essayer (je suis très lent ...), mon custom visual, si la ligne est en diagonale, sera alors un gros carré, non ?
et donc, il masquera tout ou partie de son copain d'à côté, s'il est en avant plan ? (ou sera masqué par son pote, s'il est derrière ...

A moins que l'on puisse rendre transparent tout ce qui n'est pas le contrôle LINE dans le custom visual ? c'est possible, ça ?...

Hors ligne

 

#6 03-01-2012 13:05:31

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

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

Oui, il suffit de mettre BackColor = Transparent dans uo_line.

Le code suivant :

Code: pb

uo_line lu_line, lu_line2, lu_line3

parent.openuserobject( lu_line, 100, 100 )
lu_line.ln_line.beginx = 100
lu_line.ln_line.beginy = 100
lu_line.ln_line.endx = 500
lu_line.ln_line.endy = 500
lu_line.ln_line.linethickness = 50
lu_line.ln_line.linecolor = 10000

parent.openuserobject( lu_line2, 100, 100 )
lu_line2.ln_line.beginx = 200
lu_line2.ln_line.beginy = 100
lu_line2.ln_line.endx = 200
lu_line2.ln_line.endy = 500
lu_line2.ln_line.linethickness = 30
lu_line2.ln_line.linecolor = 0

parent.openuserobject( lu_line3, 100, 100 )
lu_line3.ln_line.beginx = 100
lu_line3.ln_line.beginy = 200
lu_line3.ln_line.endx = 500
lu_line3.ln_line.endy = 200
lu_line3.ln_line.linethickness = 20
lu_line3.ln_line.linecolor = rgb(255,0,0)

produira ça :

http://img855.imageshack.us/img855/7391/pbline.png


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

Hors ligne

 

#7 03-01-2012 13:33:18

SBM  
Membre
Date d'inscription: 03-01-2012
Messages: 8
Pépites: 31
Banque: 0

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

Mais c'est exactement ce que je veux ça !!! 

Mais je n'ai pas la valeur "TRANSPARENT" dans mon attribut BackColor de mon CustomVisual ....

Problème de version ?...

Hors ligne

 

#8 03-01-2012 13:52:43

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

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

SBM a écrit:

Mais je n'ai pas la valeur "TRANSPARENT" dans mon attribut BackColor de mon CustomVisual ....

Problème de version ?...

Probablement... -----> migration PB12.5

ou alors, passer par une DW...


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

Hors ligne

 

#9 03-01-2012 14:25:27

SBM  
Membre
Date d'inscription: 03-01-2012
Messages: 8
Pépites: 31
Banque: 0

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

ben ce sera la 12.5 alors ... En commande actuellement !

et je garde ton idée dans un coin, car c'est ce que je vais utiliser !

Donc un grand merci à toi Erasorz !

Hors ligne

 

#10 03-01-2012 15:27:49

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: Rendre visible un contrôle "LINE" créé dynamiquement.

Mais... as tu essayé le code ?

Parce que OpenUserObject est bien nécessaire pour insérer dans la fenêtre un objet créé dynamiquement, mais l'objet conserve ses propriétés (la ligne ne devient pas un visual user object de base). Vérifié à l'instant sur PB9, il n'y a pas d'attribut backcolor pour une ligne, pourquoi voudrait tu le spécifier ? En l'occurrence, une ligne ne donne pas un carré plein.

Ou alors j'ai raté un épisode ?


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

 

#11 03-01-2012 15:49:50

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

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

seki a écrit:

Parce que OpenUserObject est bien nécessaire pour insérer dans la fenêtre un objet créé dynamiquement, mais l'objet conserve ses propriétés (la ligne ne devient pas un visual user object de base). Vérifié à l'instant sur PB9, il n'y a pas d'attribut backcolor pour une ligne, pourquoi voudrait tu le spécifier ? En l'occurrence, une ligne ne donne pas un carré plein.

Ou alors j'ai raté un épisode ?

C'est le uo container de la ligne qu'il faut mettre en transparent, sinon il masque le reste (p.ex pour les lignes diagonales qui sont incluses dans un rectangle)


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

Hors ligne

 

#12 04-01-2012 08:37:59

SBM  
Membre
Date d'inscription: 03-01-2012
Messages: 8
Pépites: 31
Banque: 0

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

erasorz a écrit:

seki a écrit:

Parce que OpenUserObject est bien nécessaire pour insérer dans la fenêtre un objet créé dynamiquement, mais l'objet conserve ses propriétés (la ligne ne devient pas un visual user object de base). Vérifié à l'instant sur PB9, il n'y a pas d'attribut backcolor pour une ligne, pourquoi voudrait tu le spécifier ? En l'occurrence, une ligne ne donne pas un carré plein.

Ou alors j'ai raté un épisode ?

C'est le uo container de la ligne qu'il faut mettre en transparent, sinon il masque le reste (p.ex pour les lignes diagonales qui sont incluses dans un rectangle)

Et oui !

Voilà ce que ça donne en reprenant le code de erasorz en PB9 :

http://i6.photobucket.com/albums/y203/SBM33/NightView2.jpg

Il manque juste la possibilité de metter le BackGround de l'UO en transparent, ce que je n'ai aps dans cette version ...

Il y a une valeur de couleur, pour le transparent ? que je pourrais tenter de modifier à l'OpenUserObject ?

Hors ligne

 

#13 04-01-2012 08:41:03

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

Pour les couleurs, c'est ici


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#14 04-01-2012 09:05:52

SBM  
Membre
Date d'inscription: 03-01-2012
Messages: 8
Pépites: 31
Banque: 0

Re: Rendre visible un contrôle "LINE" créé dynamiquement.

foon a écrit:

Pour les couleurs, c'est ici

Merci foon ...

Et je viens d'essayer, dans ma version, il me met le fond en blanc, et toujours pas en transparent.

J'ai bien l'impression que je ne pourrais aps m'en sortir comme ça, en V9

En tous cas merci à tous pour votre aide à un nouveau venu !
J'espère à mon tour pouvoir aider ! 

Hors ligne

 

#15 04-01-2012 10:10:26

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: Rendre visible un contrôle "LINE" créé dynamiquement.

SBM a écrit:

J'ai bien l'impression que je ne pourrais aps m'en sortir comme ça, en V9

Et en utilisant l'autre méthode : dessiner dans une DW ?  edit : peut-être que cette discussion peut t'aider ?
Si tu as des images en plus des lignes, tu peux aussi aussi utiliser l'objet picture dans la DW

Le truc du jour : pour jouer et prototyper dans une DW, la DW Debug Machine est un outil irremplaçable

Dernière modification par seki (04-01-2012 10:46:31)


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

 

#16 19-01-2015 16:29:31

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: Rendre visible un contrôle "LINE" créé dynamiquement.

Punaise, c'est vraiment un boulet de ne pas pouvoir créer de lignes dynamiquement dans une fenêtre / userobject...
J'essaie de dessiner des tableaux dynamiquement (et je ne souhaite pas passer par une datawindow); je vais essayer le dessin directement avec l'API windows, il faut peut-être passer par le u_canvas / canvas.pbx.


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

 

Pied de page des forums

Propulsé par FluxBB 1.2.22