Page 1 sur 1
[OK] Drag Drop sur fenêtre
Publié : ven. 14/oct./2016 11:57
par Ar-S
Salut,
Retour vers le passé mais je galère à gérer le glisser déposer sur une fenêtre. Sur un gadget j'ai pas de soucis mais sur une fenêtre je n'arrive pas à détecter les fichiers (images). La doc ne propose pas de code pour le glisser déposer sur fenêtre. Seulement sur gadget. Il faudrait l'ajouter.
Quelle est la syntaxe ?
Code : Tout sélectionner
; dans ma creation de fenêtre
EnableWindowDrop(#LDVM, #PB_Drop_Files, #PB_Drag_Copy)
;
; dans ma boucle principale
Select WaitWindowEvent()
Case #PB_Event_WindowDrop
If EventDropType() = #PB_Drop_Image
Debug "plop"
EndIf
;
Re: Drag Drop sur fenêtre
Publié : ven. 14/oct./2016 12:22
par Marc56
Tu ne dis pas d'où viens l'image ? (autre fenêtre de l'application ?)
On ne peut 'dropper' une image que depuis l'application elle-même, car c'est son ID qui sert de handle.
Depuis Windows, vers une application PB, ce sera un nom de fichier ou un texte.
Code : Tout sélectionner
Enumeration
#LDVM
#Image
EndEnumeration
OpenWindow(#LDVM, 0, 0, 500, 300, "",
#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EnableWindowDrop(#LDVM, #PB_Drop_Files, #PB_Drag_Copy)
EnableWindowDrop(#LDVM, #PB_Drop_Image, #PB_Drag_Copy)
EnableWindowDrop(#LDVM, #PB_Drop_Text, #PB_Drag_Copy)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_WindowDrop
Select EventDropType()
Case #PB_Drop_Image
Debug "Drop image: " +
EventDropImage(#Image) ; <-- Besoin de l'ID image source
Case #PB_Drop_Files
Debug "Drop file: " +
EventDropFiles()
Case #PB_Drop_Text
Debug "Texte" +
EventDropText()
EndSelect
EndSelect
ForEver
Re: Drag Drop sur fenêtre
Publié : ven. 14/oct./2016 12:47
par Ar-S
Merci marc, mais si pb_drop_file marche, pb_drop_image non et c'est lui qui m'intéresse.
Commente
Code : Tout sélectionner
; Case #PB_Drop_Files
; Debug "Drop file: " +
; EventDropFiles()
en ajoutant en debut de code
Code : Tout sélectionner
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
ça ne marche toujours pas.
Re: Drag Drop sur fenêtre
Publié : ven. 14/oct./2016 12:52
par Marc56
D'où vient l'objet image que tu drop ?
- De l'application elle-même ?
- De Windows (bureau, explorer etc) ?
Re: Drag Drop sur fenêtre
Publié : ven. 14/oct./2016 12:58
par Ar-S
Explorer. (je m'absente qques minutes je dois bricoler de l'elec)
Re: Drag Drop sur fenêtre
Publié : ven. 14/oct./2016 13:04
par Marc56
Ar-S a écrit :Explorer.
Donc la fenêtre reçoit alors un objet de type fichier, c'est à dire le
nom (complet) du fichier
Peu importe le type de fichier, que ce soit un fichier image ou autre chose, c'est simplement un fichier.
Pour récupérer l'image, il faut donc que tu fasse ensuite un
loadimage vers un objet image
Code : Tout sélectionner
EnableExplicit
Enumeration
#LDVM
#Image
EndEnumeration
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()
OpenWindow(#LDVM, 0, 0, 500, 300, "",
#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EnableWindowDrop(#LDVM, #PB_Drop_Files, #PB_Drag_Copy)
EnableWindowDrop(#LDVM, #PB_Drop_Image, #PB_Drag_Copy)
EnableWindowDrop(#LDVM, #PB_Drop_Text, #PB_Drag_Copy)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_WindowDrop
Select EventDropType()
; Drop image ne peut fonctionner qu'en interne
; Case #PB_Drop_Image
; Debug "Drop image: " +
; EventDropImage(#Image) ; <-- Besoin de l'ID image source
; Une image reçue depuis l'explorer = un fichier = nom complet du fichier
Case #PB_Drop_Files
Debug "Drop file: " + EventDropFiles()
If LoadImage(#Image, EventDropFiles())
ImageGadget(#PB_Any, 0, 0, 500, 300, ImageID(#Image))
EndIf
Case #PB_Drop_Text
Debug "Texte" +
EventDropText()
EndSelect
EndSelect
ForEver
End
C'est vrai que la doc aurait besoin d'une petite précision type:
EventDropImage() ne peut se faire que sur un drag'n'drop interne
C'est écrit, mais d'une manière indirecte:
EventDropImage()
Syntaxe
Resultat = EventDropImage(
#Image [, Profondeur])

Re: [OK] Drag Drop sur fenêtre
Publié : ven. 14/oct./2016 13:57
par Ar-S
Ok !
Et ben voilà !
Tout venait de là. Merci pour ces précisions.
Mesa si tu pouvais compléter la doc à ce sujet et ajouter un petit exemple pour les drag/drop sur fenêtre ce serait bien.
Merci
