Seite 1 von 1
EventType_DragStart - Ziel ermitteln
Verfasst: 03.09.2009 04:15
von STARGÅTE
Tachchen,
Folgende Situation:
Ich habe ein ListIconGadget mit Einträgen.
Je nach eintrag den ich auswähle und dann ein Drag-Versuch starte wird eine Datei ausgewählt, die jedoch nur temporär ist, welche dann am Ziel (z.b. Desktop, Explorer) erscheint.
Wie kann ich nun den Pfad des Ziels bestimmen (also zB. C:\Programme, wenn gerade ein OrdnerFenster aus ist mit dem Inhalt von Programme) damit ich von Hand noch selber Dateien kopieren kann.
Re: EventType_DragStart - Ziel ermitteln
Verfasst: 16.09.2011 17:29
von Makke
Thema gefunden, Hurra, aber leider keine Lösung.
Das Thema ist nun schon ziemlich alt, hat mittlerweile jemand eine Lösung dafür ?
Re: EventType_DragStart - Ziel ermitteln
Verfasst: 16.09.2011 19:36
von STARGÅTE
Tia, n richtige Lösung gibt es da nicht, weils ja auch eigentlich kein Problem gibt ^^
Hintergrund:
Wenn ein Drag startet von einer Quelle die zB nur aus Einträgen besteht.
Dann muss man selbst zunächst die Quelle als echte Dateien erzeugen.
In diesem Fall mach ich das im temporären Ordner GetTemporaryDirectory()
Danach kann dann DragFiles() ausgeführt werden, sodass meine temp. Datei erst wirklich ans Ziel kopiert wird.
Es gibt also scheinbar keine möglichkeit selber sofort im Ziel eine Datei zu erstellen.
Wenn die Datei noch kein Ort hat an dem sie existiert, muss sie zuerst temporär erstellt werden, sodass DragFiles() sie nutzen kann.
Mit anderen Worten, das Ziel wird nicht "ausgegeben".
Re: EventType_DragStart - Ziel ermitteln
Verfasst: 16.09.2011 20:20
von Makke
Klasse !
Vielen Dank, ich habe das ganze Internet durchforstet und nichts gefunden zu Deinem oben beschriebenem Problem, dann wollte ich per Umgehung irgendwie den aktuell angezeigten Pfad des Windows Explorers herausfinden und das so bewerkstelligen.
Aber deine Lösung ist um einiges eleganter. Also nochmals vielen Dank.
Ich lerne gerade PureBasic und erstelle dazu einen mini FTP client, der mit Drag&Drop bedient werden kann, nur so für mich zur Übung. Dein Tip bewahrte das bisher zusammengeschusterte for dem Delete-Tod.
Re: EventType_DragStart - Ziel ermitteln
Verfasst: 16.09.2011 20:32
von STARGÅTE
Genau, am Beispiel von FTP musst du also erst:
ReceiveFTPFile(#FTP, RemoteDateiname$, GetTemporaryDirectory()+Dateiname$)
machen, um dann erst
DragFiles(GetTemporaryDirectory()+Dateiname$)
zu ermöglich.
Re: EventType_DragStart - Ziel ermitteln
Verfasst: 17.09.2011 07:56
von Makke
Genauso hatte ich Deine erste Ausführung verstanden und es klappt wunderbar.
Edit: Ein ziemlich großes, mir scheinbar unlösbares, Problem ist noch folgendes:
Den FTP Transfer muss ich vor dem Befehlt DragFiles() erledigen, sobald ich also anfange Dateien zB auf das Explorer Fenster zu ziehen beginnt das Programm bereits mit dem Download der Dateien. Hierbei kann ich jedoch nicht erkennen ob zB die Drag-Operation abgebrochen wurde, wenn ich einen normalen FTP Transfer starte, muss ich erst auf das Ende des Downloads warten, wenn ich einen asynchronen Transfer starte, kann ich das zwar abbrechen, muss das jedoch manuell tun.
Weiterhin erscheinen die anderen Cursor-Bildchen nicht solange ich vor dem DragFiles() Befehl etwas (wie den FTP Transfer) ausführe, auch das DragCallback() hift hier nicht. Mir schein die Drag-Prozeduren sind entweder noch nicht ganz ausgereift bzw. es hat sich niemand über eine Ein-Fenster-Lösung Gedanken gemacht oder es geht halt nicht anders unter Windows.
Die Drop-Prozeduren funktionieren ganz so wie ich mir das vorstelle.