Le forum (ô combien francophone) des utilisateurs de Powerbuilder.




J'ai 2 DW s'appuyant sur chacune 1 table.
Je voudrais faire un drag and drop pour inserer dans la table 2 un enregsitrement de la table 1.
Concretement, l'utilisateur voit les enregistrements dans la DW_1 s'apuyant sur table_1 et les enregistrements dans la DW_2 s'apuyant sur table_2.
L'utilisateur surligne une ligne de la DW_1 et la glisse sur la DW_2 ; ceci entraine un insert dans la table_2 à partir de la table_1 en mettant en forme les donnees.
NB : table_1 et table_2 non pas du tout la meme structure.
Dernière modification par bdf94 (20-07-2007 17:14:03)
Hors ligne
tout d'abord, avant une reponse, ou avant de passer à de nouvelles questions,
il serait bien que tu puisses traiter tes anciens sujets... s'ils sont resolus ou non... ou si tu as trouvé ta solution, et en postant ta solution...
c'est juste une petite remarque que je fais...

Hors ligne
tu peux mettre une image de ton ecran ?
sinon, le drag and drop, ca fonctionne bien...
il suffit apres, de recuperer la ligne selectionnée.
tu recuperes les données que tu as besoin pour l'autre dw.

Hors ligne




C'est à dire ?
Il faut utiliser les fonctions dragdrop, dragleave, ... ?
Hors ligne










exemple : dw_select et dw_choosen
1. Mettre un Dragicon dans les dw
2. creer un event movemouse sur les 2 dw event ID = pbm_mousemove
If Message.WordParm = 1 Then this.Drag(Begin!) End If
3. dans l'event dragdrop de dw_select
DragObject ldo DataWindow ldw Long ll_row Long ll_l, ll_count_c String ls_Find ldo = DraggedObject() If TypeOf(ldo)=DataWindow! Then ldw = ldo If ldw = parent.dw_choosen Then dw_select.SetRedraw(False) dw_select.Reset() ll_row = ldw.GetSelectedRow(0) ldw.DeleteRow(ll_row) ll_count_c = ldw.RowCount() For ll_l = 1 To ll_count_c ls_Find = [b]xxxxxxxxxxxxxx[/b] ll_row = dw_select.Findls_Find ,1, dw_select.RowCount()) If ll_row > 0 Then dw_select.DeleteRow(ll_row) Next dw_select.SetRedraw(True) End If End If
4. dans l'event dragdrop de dw_choosen
DragObject ldo DataWindow ldw Long ll_nb_ligne Integer total ldo = DraggedObject() If TypeOf(ldo)=DataWindow! Then ldw = ldo if ldw = parent.dw_select Then ll_nb_ligne = ldw.GetSelectedRow(0) If ll_nb_ligne > 0 Then total = dw_choosen.RowCount( ) dw_select.RowsCopy(ll_nb_ligne, ll_nb_ligne, Primary!, dw_choosen, total + 10, Primary!) dw_choosen.ScrollToRow(total + 1) ldw.DeleteRow(ll_nb_ligne) End If End If End If
Hors ligne





C'est trop bon, je recherche une information, je regard, sujet déjà traité avec une explication en or
Hors ligne






Merci pour le movemouse, ce sera mieux que sur l'événement clicked() !
... mais à quoi correspond Message.Wordparm = 1 ?
Dernière modification par abdelta (24-08-2007 14:39:09)
Hors ligne






est-ce ca revient à mettre ceci ?
if flags = 1 ...
Hors ligne