Page 1 sur 1

problème drag and drop

Publié : sam. 14/mai/2011 19:37
par case
voila je programme un logiciel ou j'ai un gadget sur lequel je veux pouvoir utiliser le drag and drop de fichiers soit locaux sur mon disque soit depuis un navigateur internet

si j'utilise #pb_drop_files je récupère l'emplacement du fichier local sur le disque pas de soucis , par contre depuis le navigateur je n'ai que le fichier local de l'image si c'est un lien avec une image mais pas l'url du fichier


si j'utilise #pb_drop_text je récupère les url depuis le navigateur mais plus les fichier locaux.

y a t'il une solution, pour récupérer les deux données sur le même gadget je tourne en rond depuis le début d’après midi ...

Re: problème drag and drop

Publié : sam. 14/mai/2011 21:40
par Ar-S
Je n'ai pas la solution mais si elle existe je veux bien la connaitre aussi.
Je me dis qu'il faudrait compter sur le drag n drop pour ce qui est du fichier mais faudrait peut être le joindre à un hook détectant la source de l'objet survolé sur la page pour récupérer son url.

Re: problème drag and drop

Publié : sam. 14/mai/2011 21:59
par Patrick88
pis t'être que ça va t'aider ...

Code : Tout sélectionner

; Window Variablen
#MainWin=0
#WinX=300
#WinY=200
#WinW=200
#WinH=200

#BufferLength = 1000
#MEM_DROPFILES = 10
*Buffer = AllocateMemory(#BufferLength)

hWnd = OpenWindow(#MainWin, #WinX,#WinY, #WinW,#WinH, "DragTest", #PB_Window_SystemMenu)
If hWnd
  DragAcceptFiles_(WindowID(#MainWin), 1)
  ;UseWindow( #MainWin )
  Repeat
    Event= WaitWindowEvent()
    Select Event
    Case #PB_Event_CloseWindow
      Quit = 1
      
    Case #WM_DROPFILES
      *DropHandle = EventwParam()
      Debug *DropHandle
      If *DropHandle
        NbDroppedFiles = DragQueryFile_ (*DropHandle, $FFFFFFFF, *Buffer, #BufferLength)
        DragQueryFile_(*DropHandle, k, *Buffer, #BufferLength)
        DragFinish_(*DropHandle)
        File$=PeekS(*Buffer)
        MessageRequester("Gedropter Name", File$, 0)
      EndIf
    EndSelect
  Until Quit = 1
EndIf
End

Re: problème drag and drop

Publié : sam. 14/mai/2011 22:02
par Backup
tu devrai lire attentivement
DragOSFormats()

un gadget peut se voir attribuer plusieurs type de format
apres a toi de voir ceux a quoi ton gadget va réagir

puisque tu semble etre capable de récupérer les 2 type de donnée :)

un event est reçu par ton prg lorsqu'un Drop viens d'arriver

tu lis le type, et tu agis en conséquence :)

Re: problème drag and drop

Publié : dim. 15/mai/2011 11:34
par Ar-S
Patrick88 a écrit :pis t'être que ça va t'aider ...

Code : Tout sélectionner

; Window Variablen
#MainWin=0
#WinX=300
#WinY=200
#WinW=200
#WinH=200

#BufferLength = 1000
#MEM_DROPFILES = 10
*Buffer = AllocateMemory(#BufferLength)

hWnd = OpenWindow(#MainWin, #WinX,#WinY, #WinW,#WinH, "DragTest", #PB_Window_SystemMenu)
If hWnd
  DragAcceptFiles_(WindowID(#MainWin), 1)
  ;UseWindow( #MainWin )
  Repeat
    Event= WaitWindowEvent()
    Select Event
    Case #PB_Event_CloseWindow
      Quit = 1
      
    Case #WM_DROPFILES
      *DropHandle = EventwParam()
      Debug *DropHandle
      If *DropHandle
        NbDroppedFiles = DragQueryFile_ (*DropHandle, $FFFFFFFF, *Buffer, #BufferLength)
        DragQueryFile_(*DropHandle, k, *Buffer, #BufferLength)
        DragFinish_(*DropHandle)
        File$=PeekS(*Buffer)
        MessageRequester("Gedropter Name", File$, 0)
      EndIf
    EndSelect
  Until Quit = 1
EndIf
End
Ce qu'il souhaite c'est qu'avec ce drag/drop d'image d'une page web (ou autre famille de fichier) il puisse afficher d'un coté il ait le chemin locale et de l'autre l'url du fichier. (si j'ai bien pigé)

Re: problème drag and drop

Publié : dim. 15/mai/2011 12:05
par case
ce que je souhaite c'est pouvoir faire un drag & drop d'un fichier sur mon disque dur mais aussi depuis une url.
dans le meme gadget si possible, pas forcement une image mais ca peut être un fichier zip ou autre.

mais si j'utilise le drag n drop avec #pb_drop_file ca me renvoi le chemin vers l'image dans le répertoire temp sur mon disque. moi ce que je veux c'est l'url du fichier lié a l'image. ce que j'obtiens si j'utilise #pb_drop_text.

mais j’arrive pas a avoir sur le même gadget les deux modes simultanément #pb_drop_file et #pb_drop_text

je vais essayer ton code pour voir

Re: problème drag and drop

Publié : dim. 15/mai/2011 12:36
par Patrick88
marche pas avec un drop d'url...

Re: problème drag and drop

Publié : dim. 15/mai/2011 14:07
par Backup
et avec #PB_Drag_Link ?
ps je veux bien chercher , mais laisse au moins un code minimum
pour teste .. :)

Re: problème drag and drop

Publié : dim. 15/mai/2011 14:24
par case
je voudrais récupérer l'url d'un fichier depuis mon navigateur ou le chemin vers le fichier si c'est un fichier local et ce depuis le même gadget ici un image gadget pour l'exemple.

essaye le glisser déposer depuis un lien internet et un fichier local avec les 2 options.
tu vas tout de suite comprendre mon problème

Code : Tout sélectionner

test=OpenWindow(#PB_Any,0,0,128,128,"test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)   
test2=ImageGadget(#PB_Any,0,0,128,128,0,#PB_Image_Border):EnableGadgetDrop(test2,#PB_Drop_Files,#PB_Drag_Link)  ; mettre en commentaire pour tester #pb_drop_text
;test2=ImageGadget(#PB_Any,0,0,128,128,0,#PB_Image_Border):EnableGadgetDrop(test2,#PB_Drop_Text,#PB_Drag_Link)    ; enlever le commentaire pour  tester #pb_drop_text
Repeat
   ev=WindowEvent()
   If ev           
      Select ev               
         Case #PB_Event_GadgetDrop
            If EventDropType()=#PB_Drop_Files  
               Debug EventDropFiles()
            EndIf
            If EventDropType()=#PB_Drop_Text
               Debug EventDropText()
            EndIf
      EndSelect
      
   EndIf
Until ev=#PB_Event_CloseWindow

[/code]

Re: problème drag and drop

Publié : dim. 15/mai/2011 15:25
par Backup
..............

Re: problème drag and drop

Publié : dim. 15/mai/2011 15:36
par falsam
Bien vuuuuuu(e) !!Je ne te ferais pas d'éloges car tu vas finir par enfler :p :)

Re: problème drag and drop

Publié : dim. 15/mai/2011 16:08
par case
ah ok, vu que j'ai la doc en anglais j’étais passé a coté de cette finesse...


merci dobro :)