Seite 2 von 2

Verfasst: 08.06.2007 02:43
von duli
:oops: habs versucht zu verstehen, aber vieleicht liegt es auch nur daran das es schon so früh ist. Morgen ist auch noch ein Tag dann verstehe ich es sicher besser. :allright:
Danke noch und gute Nacht Duli

Verfasst: 08.06.2007 10:04
von duli
:D So hier bin ich wieder in alter frische
Habe dein Post gelsen ts-soft

Habe so viel wie möglich nun eingebebaut hier das Ergebniss.
Ich muss einen Fehler bei den Konstanten gemacht haben, aber ich erkenne nicht welchen könnt ihr mir hierbei helfen.

Dann könnte ich testen ob meine ID mit der Zeile mein gewünschtes Zielverzeichnis zurück bekomme.
Danke vielmals

Code: Alles auswählen

Zieldatei$ = GetGadgetItemText(#explorerfeld2, SourceItem, 0)

Code: Alles auswählen

Enumeration ; hier kommen alle Windows rein
  #Hauptfenster
EndEnumeration
 
Enumeration ; hier sind die gadgets
  #explorerfeld1
  #explorerfeld2
EndEnumeration



If OpenWindow(#Hauptfenster, 200, 200, 430, 400, "Drag & Drop", #PB_Window_SystemMenu)
    CreateGadgetList(WindowID(0))
   
   
    ExplorerListGadget(#explorerfeld1, 10, 10, 200, 380, "*", #PB_Explorer_MultiSelect)
    ExplorerListGadget(#explorerfeld2, 210, 10, 200, 380, "*", #PB_Explorer_MultiSelect)
   
    EnableGadgetDrop(#explorerfeld1, #PB_Drop_Files, #PB_Drag_Copy)
    EnableGadgetDrop(#explorerfeld2, #PB_Drop_Files, #PB_Drag_Copy) 
    

   
 Repeat
 event = WaitWindowEvent()
      
 If Event = #PB_Event_Gadget And EventGadget() = 1 And EventType() = #PB_EventType_DragStart
      Files$ = ""       
        For i = 0 To CountGadgetItems(1)-1
          If GetGadgetItemState(1, i) & #PB_Explorer_Selected
            Files$ + GetGadgetText(1) + GetGadgetItemText(1, i) + Chr(10)
          EndIf
        Next i        
      DragFiles(Files$)
            
     ElseIf event = #PB_Event_GadgetDrop 
    
    Zieldatei$ = GetGadgetItemText(#explorerfeld2, SourceItem, 0)
    Debug Zieldatei$
    
      Dateien.s = EventDropFiles(); den String mit den Dateinamen in Variable speichern
      Anzahl = CountString(Dateien, Chr(10)) + 1; Anzahl ermitteln
      
      ev = EventDropAction()  ;hier wird zurückgegeben auf welche art gedropt werden soll
        For I = 1 To Anzahl
          If ev = #PB_Drag_Copy   ;hier wird weiter gemacht wenn das Drag & Drop im EnableGadgetDrop mit Option Copy versehen ist.
         
          CopyFile(StringField(Dateien, I, Chr(10)), Zieldatei$)

        EndIf
        
        If ev = #PB_Drag_Move   ;hier wäre ein verschieben der Daten möglich zum Programmieren
        EndIf
      Next
    EndIf
     
    Until event = #PB_Event_CloseWindow
   
  EndIf  
Sorry habe hier vorher etwas noch nicht gelöscht. :oops: aber nun ist es weg

Verfasst: 08.06.2007 10:48
von duli
:oops: Habe den Fehler gefunden war im Code die Zeile wo event = #PB_Event_GadgetDrop abgefragt wurde muss ein else if sein.

Aber wenn ich da den d&d mache bekomme in in der Variable Zieldatei$ alles mögliche an werten aber nicht die vom Ziellaufwerk was mache ich hier falsch.

Ich habe im Beispiel oben bereits die koriegierte Variante reingemacht.

Verfasst: 08.06.2007 11:07
von duli
Hallo zusammen

hoffe das ich euch nicht zu sehr verwirre.
Im Folgenden Teil bekomme ich zwar den wert des Quell laufwerks aber ich bekomme einfach nicht den Wert des Zielverzeichnisses, uf. :?

Code: Alles auswählen

ElseIf event = #PB_Event_GadgetDrop 
    
    Zieldatei$ = GetGadgetText(#explorerfeld1)
    
 
    
      Dateien.s = EventDropFiles(); den String mit den Dateinamen in Variable speichern
      Anzahl = CountString(Dateien, Chr(10)) + 1; Anzahl ermitteln
      
      ev = EventDropAction()  ;hier wird zurückgegeben auf welche art gedropt werden soll
        For I = 1 To Anzahl
          If ev = #PB_Drag_Copy   ;hier wird weiter gemacht wenn das Drag & Drop im EnableGadgetDrop mit Option Copy versehen ist.
          
           Debug Zieldatei$ + "\" + StringField(Dateien, I, Chr(10))
           
          CopyFile(StringField(Dateien, I, Chr(10)), Zieldatei$+ "\" + StringField(Dateien, I, Chr(10)))

        EndIf
        
        If ev = #PB_Drag_Move   ;hier wäre ein verschieben der Daten möglich zum Programmieren
        EndIf
      Next
    EndIf

Verfasst: 08.06.2007 16:55
von ts-soft
>> aber ich bekomme einfach nicht den Wert des Zielverzeichnisses
Hab mir den Code jetzt nicht angesehen, aber Du bekommt immer nur den
Wert der Quelldatei :wink: , wohin mußte ja Wissen. Evtl. in das Verzeichnis
wo der Dropempfänger gerade hinzeigt

Verfasst: 08.06.2007 19:07
von duli
ja das stimmt, aber es genügt nicht das gadget zu wissen wo die Maus draufzeigt, sondern den wert von dem Verzeichniss wo ich die Maus im Gadget losslasse, und da komme ich einfach nicht weiter? :oops:

Verfasst: 08.06.2007 19:16
von ts-soft
>> sondern den wert von dem Verzeichniss
Das was gerade geöffnet ist, bei einem ExplorerListGadget mit
GetGadgetText()

Verfasst: 09.06.2007 09:43
von duli
Aber so weit ich das verstehe tue ich das ja, in der Abfrage wo der Drop gemacht wird frage ich nach dem Wert des ExplorerListGadget mit dem GetGadgetText() aber als antwort bekomme ich nur das resultat von dem Explorerlistgadget wo der drag begonnen wurde, obwohl es zu dem Zeitpunkt abgefragt wird wo ich gedropt habe. Die Frage wenn ich gedropt habe ist so wie ich es verstehe diese.
Oder verstehe ich diese Zeile Falsch

Code: Alles auswählen

ElseIf event = #PB_Event_GadgetDrop
So wie ich es verstanden habe müsste ich hier all das abfrgen können was nach oder während des Drops geschieht.
Und somit müsste ja in den GetGadgetText() den richtigen Wert erhalten und nicht den Wert wo ich das Drag gestartet habe.

Aber vieleicht ist dass der Fehler in meinem Denken, nur wann ist der Moment oder wie kann ich abfragen nach den Werten wenn es so weit ist?

Verfasst: 09.06.2007 19:59
von duli
:oops: Habe es probiert und probiert, aber es ist so, nach der oben genannten Abfrage wird das Programm verzweigt, wenn ich die Taste Loslasse.
Aber ich bekomme nur den Wert vom Gadget wo ich gedragt habe, also sprich die Taste gedrückt habe.
Habe es auch bewusst mit den Konstanten versucht das sie fest auf das Fenster stehen auf welches ich Dorpe, half auch nichts was kann ich machen, ich verzweifle nächstens :o :o :o :o :o :? :( :(