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.
EventType_DragStart - Ziel ermitteln
EventType_DragStart - Ziel ermitteln
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- Makke
- Beiträge: 156
- Registriert: 24.08.2011 18:00
- Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
- Wohnort: Ruhrpott
- Kontaktdaten:
Re: EventType_DragStart - Ziel ermitteln
Thema gefunden, Hurra, aber leider keine Lösung.
Das Thema ist nun schon ziemlich alt, hat mittlerweile jemand eine Lösung dafür ?
Das Thema ist nun schon ziemlich alt, hat mittlerweile jemand eine Lösung dafür ?
---
Windows 11 (64 bit)
Windows 11 (64 bit)
Re: EventType_DragStart - Ziel ermitteln
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".
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".
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- Makke
- Beiträge: 156
- Registriert: 24.08.2011 18:00
- Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
- Wohnort: Ruhrpott
- Kontaktdaten:
Re: EventType_DragStart - Ziel ermitteln
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.
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.
---
Windows 11 (64 bit)
Windows 11 (64 bit)
Re: EventType_DragStart - Ziel ermitteln
Genau, am Beispiel von FTP musst du also erst:
ReceiveFTPFile(#FTP, RemoteDateiname$, GetTemporaryDirectory()+Dateiname$)
machen, um dann erst
DragFiles(GetTemporaryDirectory()+Dateiname$)
zu ermöglich.
ReceiveFTPFile(#FTP, RemoteDateiname$, GetTemporaryDirectory()+Dateiname$)
machen, um dann erst
DragFiles(GetTemporaryDirectory()+Dateiname$)
zu ermöglich.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- Makke
- Beiträge: 156
- Registriert: 24.08.2011 18:00
- Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
- Wohnort: Ruhrpott
- Kontaktdaten:
Re: EventType_DragStart - Ziel ermitteln
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.
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.
---
Windows 11 (64 bit)
Windows 11 (64 bit)