Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour
Peut-on ajouter un userobject dans une datawindow...
J'ai un userobject constitué de plusieurs images que j'aimerais ajouter plusieurs fois dans ma datawindow
Merci d'avance
Dernière modification par dark ryus (17-05-2011 16:03:10)
Hors ligne
J'ai essayé de feinté le truc en mettant une datawindow dw_mesimages dans me datawindow principale, mais elle n'apparait pas, je ne la voit pas....
Hors ligne
C'est pas claire comme problématique.
Déjà il convient de faire une distinction entre l'objet datawindow (sql formaté en représentation graphique) et la classe datawindow dont l'objet datawindow n'est qu'une propriété.
La classe datawindow n'a pas de conteneur (autrement ce n'est pas une classe d'accueil comme peut l'être une classe fenêtre ou onglet) donc elle ne peut pas accepter d'autre classes...et l'objet datawindow n'est pas une classe donc elle ne peut pas accepter d'autre classes....
En revanche une classe de type user objet accueillant une classe locale de type datawindow pourra lui même accepter une autre classe de type userObject.
Dernière modification par Dadone (17-05-2011 13:02:30)
Hors ligne
En gros je veux mettre des images perso pour faire les entête des colonnes de mes datawindow.
Ces images sont en 3 parties, le bord gauche, le milieu extensible, et le bord droit.
J'ai fait un userobject avec ces 3 images que j'aimerais utiliser dans mes entêtes de colonne, mais cela ne fonctionne pas.
Donc j'ai essayé de mettre ces 3 images dans une datawindow, sans requête, mais quand j'ajoute celle ci dans une autre datawindow, elle ne s'affiche pas, pourtant mes images sont bien là.
Dernière modification par dark ryus (17-05-2011 13:16:15)
Hors ligne
Si je comprends il s'agit uniquement d'une représentation graphique cela n'a rien à voir avec des user objet.
Normalement la représentation graphique se fait par l'insertion d''image dans l'objet datawindw (picture object).
Hors ligne
La meilleuire façon selon moi de faire ce que tu veux, est de coder dans un ancêtre commun à toutes tes datawindows (dans le constructor) un appel à une fonction qui va créer dynamiquement un ensemble de bitmaps (gauche + centre + droit) à chaque entête de colonne.
Comme chaque entête de colonne aura un nom du style (nom_colonne_t), il te sera facile de les récupérer afin de connaitre chaque position (x et y + width et height), de telle sorte qu'il ne te restera plus qu'à créeer chaque bitmap au dessus de ton entête.
Et si tu joue avec les tris, lors d'un clic sur l'entête, il suffit de modifier légèrement ton script qui s'attendait à recevoir en paramètre un nom_colonne_t et de l'adapter à recevoir un string du genre b_nom_colonne_t par exemple)...
Le code d'un create bitmap pompé du dw_syntax:
<DW Control Name>.Modify( & "create bitmap(band=<Detail, Footer, Header, Header.<group #>, Summary, Trailer.<group #>, Background, Foreground>" + & " pointer='<Arrow!, Cross!, HourGlass!, IBeam!, Icon!, Size!, SizeNESW!, SizeNS!, SizeNWSE!, SizeWE!, UpArrow!, or cursor filename (with path)>' moveable=<0 - False, 1 - True> resizeable=<0 - False, 1 - True> x='<an integer>' y='<an integer>' height='<an integer>' width='<an integer>'" + & " filename='<filename (with path) containing bmp (i.e., c:\test\fish.bmp)>' invert='<0 - False, 1 - True>' name=<string>" + & " tag='<string>')")
A+
Vincent
Dernière modification par vince.janssens (17-05-2011 14:56:41)
Hors ligne
j'ai pensé à la solution de la fonction dynamique aussi.
J'essaye de voir s'il n'y a pas une autre solution.
et avec le .modify(), on peux ajouter plusieurs images d'un coup ou bien on fait plusieurs .modify() ? (gauche + milieu + droite)
Dernière modification par dark ryus (17-05-2011 15:06:46)
Hors ligne
dark ryus a écrit:
j'ai pensé à la solution de la fonction dynamique aussi.
J'essaye de voir s'il n'y a pas une autre solution.
et avec le .modify(), on peux ajouter plusieurs images d'un coup ou bien on fait plusieurs .modify() ? (gauche + milieu + droite)
Etant donné qu'il s'agit respectivement de 3 bitmap, tu dois faire 3 modify.
Cette solution est pour moi la plus simple dans le sens qu'une foi ta fonction implémentée, tu ne te tracasses plus de rien pour toutes les autres futures DW...
Dans le cas d'une grid, il te faut penser à développer le resize de tes bitmaps, il te suffit de te caler sur la largeur du header en dessous de ta bitmap (de préférence rendu invisible) dont tu modifie la taille...Tu peux même envisager le drag and drop de ta bitmap pour changer la position d'une colonne, mais bon là c'est pour plus tard ;-) ....
A+
Vincent
Hors ligne
Hors ligne