Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
Ne sachant pas dans quelle section poster ce message, je le poste ici.
En fait, je cherche un moyen de faire avec PB, qui me permette d'avoir un plan dans lequel je puisse
positionner comme je le souhaite des objets (rectangle, triangle, etc ...). En outre, je pourrai bien
evidemment changer les propriétés graphique de ces objets.
Comment pourrai-je faire cela ?
Par avance, merci.
Doctor Z.
Hors ligne
heuuu, c'est quoi ce mauvais plan ?
tu peux me re expliquer en porugais, s'il te plait ?
Hors ligne
Bonjour,
A ma connaissance, des DW graphiques, je ne connais que : http://www.dw-extreme.com/
Cordialement,
Hors ligne
J'ai déjà fait ce genre de choses en C++/OpenGl, mais je ne sais pas si c'est vraiment gérable sous PowerBuilder.
A vrai dire, une chose est certaine : tu pourras sans soucis modifier les objets dynamiquement via des champs dans lesquels l'utilisateur modifiera les propriétés des objets. A la validation, il te suffira de changer les propriétés de l'objet via le langage scriptural qui s'y prête bien. Tu peux même stopper temporairement la mise à jour de la datawindow pour éviter que ca ne rame pendant le traitement.
Pour le positionnement, là aussi pas de soucis : des évènements te permettent de savoir où l'utilisateur a cliqué.
Pour les figures disponibles, je sais que tu peux avoir des formes carrées, rectangulaires, et même ovales ou rondes. Les lignes droites aussi sont disponibles, mais pas les lignes courbes. En revanche je n'ai pas vu de triangles, donc à mon avis il faudra se compliquer le travail avec 3 lignes droites.
La vraie question c'est de parvenir à ajouter et supprimer dynamiquement dans objets dans ta datawindow. Je pense que c'est possible en éditant ses données via du script, mais je n'en suis pas certain du tout... Et je ne maitrise pas ce genre de choses pour ma part.
-----------------
Donc au final moi je vois bien 2 datawindows :
- 1 datawindow vide, de dessin
- 1 datawindow de control panel
Sur le control panel : l'utilisateur choisi sa forme.
Si tu reçois un clic sur la datawindow de dessin (géré par les events de la datawindow) :
- si aucun control n'est cliqué, tu ajoutes le control associé à la forme demandée (ligne, rectangle, ovale, ...)
- si un control est cliqué, tu affiches ses propriétés (x, y, width, height, ...) dans le control panel
Dans le control panel, si l'utilisateur clic sur le bouton de validation :
- tu stop le redraw
- tu modifie les données de l'objet associé dans la fenêtre de dessin (dw.modify()) pour lui donner celles que l'utilisateur a saisi/modifé dans le control panel
- tu actives le redraw
Éventuellement tu peux même gérer le drag/drop des objets, au final...
Bref c'est pas moi le pro de Pb, mais ça me semble jouable de cette façon. Dessiner semble compliqué, mais c'est pas cette série d'étapes simplistes que je gérait des illusions d'optique en C++/OpenGl en tant que débutant.
Dernière modification par Nyphel (03-10-2008 13:51:59)
Hors ligne
cposervices a écrit:
A ma connaissance, des DW graphiques, je ne connais que : http://www.dw-extreme.com/
Extreme datawindow components are developed using only the Powerbuilder datawindow component and its native functionality and powerscript. No third party tools such as OCX controls or frameworks are used. All input and manipulation is intuitively mouse driven. This combined with the rich graphic presentation styles makes for a more enriching user experience. A variety of components are currently available that cover a number of business needs.
Il semblerait donc que tu puisse faire ce genre de choses directement avec PowerBuilder... Reste à savoir le faire
Hors ligne
Bonjour,
En fait http://www.dw-extreme.com utilise tout simplement la formulation create qui permet d'ajouter dynamiquement des objets graphiques à une datawindow (voir documentation de la méthode modify des datawindows) :
// Ajout dynamique d'un rectangle dans une datawindow ls_syntaxe = 'create rectangle(band=detail x="178" y="124" height="360" width="517" name=r_1 visible="1" brush.hatch="6" brush.color="33554432" pen.style="0" pen.width="5" pen.color="1073741824" background.mode="2" background.color="33554432" )' dw_dynamicobject.Modify(ls_syntaxe) // Ajout dynamique d'une ligne à une datawindow ls_syntaxe = 'create line(band=detail x1="2382" y1="144" x2="2226" y2="616" name=l_1 visible="1" pen.style="0" pen.width="5" pen.color="33554432" background.mode="2" background.color="1073741824" )' dw_dynamicobject.Modify(ls_syntaxe)
Pour trouver la syntaxe, il suffit de poser l'objet graphique dans une datawindow provisoire et de faire un "edit source".
Hors ligne
Ah c'est chouette ça, donc à partir de là on peut faire à peu près tout ce qu'on veut... Enfin je ne sais pas si on peut aussi supprimer les objets, mais là je n'ai pas le temps de tester comme vient de le faire BucK. D'ailleurs qu'est-ce que je fais encore là ?! Allez ouste !
Hors ligne
Oui, on peut supprimer les objets avec la syntaxe "DESTROY control"
Hors ligne
Bonjour à tous,
Effectivement, je veux que dans une grande datawindow je puisse mettre toutes sortes de formes
(rectangle, triangle, ...) un genre de paint. En outre, je veux pouvoir les déplacer comme bon me
semble, les supprimer, les modifier, etc ...
Si avec cela, je peux faire ça, alors ça va vraiment m'arranger.
Nyphel, c'était aussi mon idée: avoir une datawindow pour de dessin et une du control panel.
Je pense que je peux me débrouiller sans avoir à prendre un composant (sauf si celui-ci est gratuit).
Hors ligne
Doctor Z a écrit:
Je pense que je peux me débrouiller sans avoir à prendre un composant (sauf si celui-ci est gratuit).
Salut, àmha, mieux vaudrait ne pas réinventer la roue... et utiliser un objet tiers. Pour 50€ tu devrais trouver ton bonheur et si tu devais le développer toi-même, ça te couterait certainement bien plus cher...
Hors ligne
erasorz a écrit:
Doctor Z a écrit:
Je pense que je peux me débrouiller sans avoir à prendre un composant (sauf si celui-ci est gratuit).
Salut, àmha, mieux vaudrait ne pas réinventer la roue... et utiliser un objet tiers. Pour 50€ tu devrais trouver ton bonheur et si tu devais le développer toi-même, ça te couterait certainement bien plus cher...
Salut erasorz,
C'est une idée que j'ai dans le cadre d'un projet personnel. Si les 50€ le justifie, pourquoi pas, je
suis partant.
Hors ligne