Drop zwischen ExplorerListGadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Drop zwischen ExplorerListGadget

Beitrag 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
Zuletzt geändert von marcelx am 02.12.2021 10:45, insgesamt 1-mal geändert.
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
HeX0R
Beiträge: 2954
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: Drop zwischen ExplorerListGadget

Beitrag von HeX0R »

Schau Dir ma das Beispiel für D&D in der Hilfe an, Du hast gar kein Drag-Handling eingebaut.
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Drop zwischen ExplorerListGadget

Beitrag 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"?
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Drop zwischen ExplorerListGadget

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Antworten