Seite 1 von 1

Drop zwischen ExplorerListGadget

Verfasst: 23.11.2021 10:37
von marcelx
Hallo zusammen,

wie kann ich per drop Dateien von ein ExplorerListGadget zu den andere kopieren?
Geht das überhaupt?

Gruß
MarcelX

Code: Alles auswählen

Enumeration
  #explorerL
  #explorerR
EndEnumeration

If OpenWindow(0, 0, 0, 600, 400, "ExplorerListGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ExplorerListGadget(#explorerL, 10, 10, 285, 380, "C:\", #PB_Explorer_AlwaysShowSelection)
  ExplorerListGadget(#explorerR, 305, 10, 285, 380, "C:\", #PB_Explorer_AlwaysShowSelection)
  EnableGadgetDrop(#explorerL,    #PB_Drop_Files,   #PB_Drag_Copy)
  EnableGadgetDrop(#explorerR,    #PB_Drop_Files,   #PB_Drag_Copy)
    
  Repeat
    Event = WaitWindowEvent()
    Select Event
      Case #PB_Event_GadgetDrop
        Debug "DROP ..."
        FilesFrom$ = EventDropFiles() 
        Select EventGadget()
          Case #explorerL
            ; CopyFile(FilesFrom$, GetGadgetText(#explorerL)+GetFilePart(FilesFrom$))
            Debug "FROM "+FilesFrom$ ; cp file$ TO TODO
            Debug "TO "+GetGadgetText(#explorerL)+GetFilePart(FilesFrom$)
          Case #explorerR
            ; CopyFile(FilesFrom$, GetGadgetText(#explorerR)+GetFilePart(FilesFrom$))
            Debug "FROM "+FilesFrom$
            Debug "TO "+GetGadgetText(#explorerR)+GetFilePart(FilesFrom$)
        EndSelect
    EndSelect
  Until Event = #PB_Event_CloseWindow        

EndIf

Re: Drop zwischen ExplorerListGadget

Verfasst: 23.11.2021 11:09
von HeX0R
Schau Dir ma das Beispiel für D&D in der Hilfe an, Du hast gar kein Drag-Handling eingebaut.

Re: Drop zwischen ExplorerListGadget

Verfasst: 23.11.2021 11:15
von marcelx
das Kopieren von Datei aus z.B. den Windows-Explorer funktioniert.

Wie ist das Drag-Handling für das Kopieren von ein ExplorerListGadget zum andere?

EDIT: ist es in "If EventType() = #PB_EventType_DragStart"?

Re: Drop zwischen ExplorerListGadget

Verfasst: 23.11.2021 11:36
von marcelx
Ich habe was gelernt - danke HeXOR
Und so funktioniert

Code: Alles auswählen

Enumeration
  #explorerL
  #explorerR
EndEnumeration

Procedure dropExplorer(explorerFrom, explorerTo)
  Files$ = ""       
  For i = 0 To CountGadgetItems(explorerFrom)-1
    If GetGadgetItemState(explorerFrom, i) & #PB_Explorer_Selected
      Files$ + GetGadgetText(explorerFrom) + GetGadgetItemText(explorerFrom, i)
    EndIf
  Next i 
  If Files$ <> ""
    ; CopyFile(Files$, GetGadgetText(explorerTo)+GetFilePart(Files$))
    Debug "FROM "+ Files$
    Debug "TO "+GetGadgetText(explorerTo)+GetFilePart(Files$) 
  EndIf
EndProcedure
  
If OpenWindow(0, 0, 0, 600, 400, "ExplorerListGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ExplorerListGadget(#explorerL, 10, 10, 285, 380, "C:\", #PB_Explorer_AlwaysShowSelection)
  ExplorerListGadget(#explorerR, 305, 10, 285, 380, "C:\", #PB_Explorer_AlwaysShowSelection)
  EnableGadgetDrop(#explorerL,    #PB_Drop_Files,   #PB_Drag_Copy)
  EnableGadgetDrop(#explorerR,    #PB_Drop_Files,   #PB_Drag_Copy)
    
  Repeat
    Event = WaitWindowEvent()
    Select Event
      Case #PB_Event_Gadget 
        If EventType() = #PB_EventType_DragStart ; zwischen explorerL/R
          Select EventGadget()
            Case #explorerL
              dropExplorer(#explorerL, #explorerR)
            Case #explorerR
              dropExplorer(#explorerR, #explorerL)              
      
          EndSelect
          
        EndIf
  
      Case #PB_Event_GadgetDrop  ; z.B. von Win-Explorer in explorerL/R
        Debug "DROP ..."
        FilesFrom$ = EventDropFiles() 
        Select EventGadget()
          Case #explorerL
            ; CopyFile(FilesFrom$, GetGadgetText(#explorerL)+GetFilePart(FilesFrom$))
            Debug "FROM "+FilesFrom$ ; cp file$ TO TODO
            Debug "TO "+GetGadgetText(#explorerL)+GetFilePart(FilesFrom$)
          Case #explorerR
            ; CopyFile(FilesFrom$, GetGadgetText(#explorerR)+GetFilePart(FilesFrom$))
            Debug "FROM "+FilesFrom$
            Debug "TO "+GetGadgetText(#explorerR)+GetFilePart(FilesFrom$)
        EndSelect
    EndSelect
  Until Event = #PB_Event_CloseWindow        

EndIf