[OK] Drag Drop sur fenêtre

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

[OK] Drag Drop sur fenêtre

Message 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
;
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Drag Drop sur fenêtre

Message 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
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Drag Drop sur fenêtre

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Drag Drop sur fenêtre

Message par Marc56 »

D'où vient l'objet image que tu drop ?
- De l'application elle-même ?
- De Windows (bureau, explorer etc) ?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Drag Drop sur fenêtre

Message par Ar-S »

Explorer. (je m'absente qques minutes je dois bricoler de l'elec)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Drag Drop sur fenêtre

Message 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])

:wink:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: [OK] Drag Drop sur fenêtre

Message 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 ;)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre