Programm nach ExplorerListGadget verschieben , wie ?

Für allgemeine Fragen zur Programmierung mit PureBasic.
funkheld
Beiträge: 636
Registriert: 31.12.2009 11:58

Programm nach ExplorerListGadget verschieben , wie ?

Beitrag von funkheld »

Hallo, guten Tag.

Ich möchte bitte Programme von einem ExplorerListGadget zu einem anderen ExplorerListGadget schieben.
Oder vom Windowsscreen in das ExplorerListGadget.
Beides funktioniert nicht.

Geht nur wenn ich das auf das Windowsfenster schiebe von beiden.

Danke.
Gruss

Code: Alles auswählen

Global files.s

Enumeration
  #window_1
  #expl_1
  #expl_2
  
EndEnumeration

OpenWindow(#window_1, 1100, 5, 220, 400, "CPCT", #PB_Window_SystemMenu)

ExplorerListGadget(#expl_1, 10, 25, 200, 350,  "d:\cygwin\home\pebi\pebi-cpct\*.txt;*.c;*.h")
SetGadgetAttribute(#expl_1,#PB_Explorer_DisplayMode,#PB_Explorer_List)

Repeat 
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      
      If EventGadget() = #expl_1 And EventType() = #PB_EventType_DragStart
        Files = ""
        For i = 0 To CountGadgetItems(#expl_1)-1
          If GetGadgetItemState(#expl_1, i) & #PB_Explorer_Selected
            Files + GetGadgetText(#expl_1) + GetGadgetItemText(#expl_1, i) + Chr(10)
          EndIf
        Next i     
        DragFiles(Files)
      EndIf
           
      If EventGadget() = #expl_2 And EventType() = #PB_EventType_DragStart
        Files = ""
        For i = 0 To CountGadgetItems(#expl_2)-1
          If GetGadgetItemState(#expl_2, i) & #PB_Explorer_Selected
            Files + GetGadgetText(#expl_2) + GetGadgetItemText(#expl_2, i) + Chr(10)
          EndIf
        Next i
        DragFiles(Files)
      EndIf     
    
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_1
        CloseWindow(#Window_1)
        Break
      EndIf
  EndSelect
  
  ReleaseDC_(WindowID(0), *DC) 
ForEver
ST4242
Beiträge: 42
Registriert: 29.10.2011 16:54

Re: Programm nach ExplorerListGadget verschieben , wie ?

Beitrag von ST4242 »

Hallo,

bis jetzt hast Du nur eingebaut das die Elemente weggezogen werden können.
Lese in der Hilfe mal die Beispiele zu Drag und Drop durch - vor allem >EnableGadgetDrop(#Gadget, Format, Aktionen [, PrivatTyp])<.
Ohne diesen Befehl werden keine Gadget irgendwelche Drops annehmen.
Benutzeravatar
juergenkulow
Beiträge: 188
Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten

Re: Programm nach ExplorerListGadget verschieben , wie ?

Beitrag von juergenkulow »

Hallo funkheld,

Code: Alles auswählen

; Kopiere Dateien per "Drag and Drop" vom Schreibtisch / Windowsdesktop auf ein ExplorerListGadget Ziel. 
Global files.s

Enumeration
  #window_1
  #expl_1
EndEnumeration

OpenWindow(#window_1, 100, 5, 620, 400, "CPCT", #PB_Window_SystemMenu)
Zielpfad$="d:\cygwin\home\pebi\pebi-cpct\"
If -2<>FileSize(Zielpfad$) ; Wenn der Zielpfad kein Verzeichnis ist, dann  
  Zielpfad$ = PathRequester("Bitte wählen Sie einen Pfad aus", "") ; wähle einen Pfad aus. 
  CompilerIf #PB_Compiler_OS=#PB_OS_Windows
    If "\"<>Right(Zielpfad$,1)
      Zielpfad$+"\"
    EndIf 
  CompilerEndIf
EndIf 
ExplorerListGadget(#expl_1, 10, 25, 600, 350, Zielpfad$+"*.*")
EnableGadgetDrop(#expl_1,    #PB_Drop_Files,   #PB_Drag_Copy) ; Aktiviere Gadget als Ziel für Drop.
fertig=#False 
Repeat
  Event = WaitWindowEvent() 
  Select Event 
    Case  #PB_Event_GadgetDrop ; Für den Fall eines Ereignis GadgetDrop: 
      DiesesGadget=EventGadget()
      Files = EventDropFiles() ; Besorge die betroffenen Dateien.
      Count  = CountString(Files, Chr(10)) + 1
      For i = 1 To Count ; Verarbeite die Dateien einzeln. 
        QuellDatei.s=StringField(Files, i, Chr(10))
        ZielDatei.s= GetGadgetText(DiesesGadget)+GetFilePart(StringField(Files, i, Chr(10)))      
        Select EventDropAction()
          Case #PB_Drag_Copy
            CopyFile( QuellDatei,ZielDatei)
            ; Debug "CopyFile("+QuellDatei+", "+ZielDatei+")"
        EndSelect
      Next i
      Zielpfad$= GetGadgetText(DiesesGadget) ; Besorge den aktuellen Zielpfad von DiesesGadget.
      FreeGadget(DiesesGadget)               ; Schließe das Gadget und öffne es neu.
      ExplorerListGadget(DiesesGadget, 10, 25, 600, 350,  Zielpfad$+"*.*")
      EnableGadgetDrop(DiesesGadget,    #PB_Drop_Files,   #PB_Drag_Copy)
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_1
        CloseWindow(#Window_1)
        fertig=#True 
      EndIf
  EndSelect
Until fertig 
; offen:  kopiere Ordner, Fehlemeldung wenn CopyFile fehlschlägt.
funkheld
Beiträge: 636
Registriert: 31.12.2009 11:58

Re: Programm nach ExplorerListGadget verschieben , wie ?

Beitrag von funkheld »

Hallo, danke für die Hilfe.

Funktioniert wunderbar.

Gruss
Antworten