weiteres bei Drag und Drop

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Beitrag 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
Man kann nicht wissen was man nicht weiss..
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Beitrag 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
Zuletzt geändert von duli am 08.06.2007 10:49, insgesamt 1-mal geändert.
Man kann nicht wissen was man nicht weiss..
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Beitrag 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.
Man kann nicht wissen was man nicht weiss..
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Beitrag 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
Man kann nicht wissen was man nicht weiss..
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Beitrag 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:
Man kann nicht wissen was man nicht weiss..
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> sondern den wert von dem Verzeichniss
Das was gerade geöffnet ist, bei einem ExplorerListGadget mit
GetGadgetText()
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Beitrag 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?
Man kann nicht wissen was man nicht weiss..
Benutzeravatar
duli
Beiträge: 75
Registriert: 17.04.2007 11:39

Beitrag 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 :? :( :(
Man kann nicht wissen was man nicht weiss..
Antworten