Dateilink in Zwischenablage kopieren? [gelöst]
-
- Beiträge: 1580
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Dateilink in Zwischenablage kopieren? [gelöst]
Hallo,
Wenn man eine Datei im Dateibrowser mit Strg+C in die Zwischenablage kopiert und in einem anderen Dateibrowser kann man diese mit Strg+V einfügen und es startet der Kopiervorgang. Soweit die Standard Funktion zum einfachen Kopieren von Dateien von A nach B.
Ich habe mir einen Bildbetrachter geschrieben, das zeigt irgend welche Fotos an. Nun möchte ich gerne in meinem Programm bei dem aktuell sichtbaren Bild Strg+C drücken, so dass dann die Datei bei einem beliebigen anderen Dateibrowser (wie der Windows Datei Explorer) einfügen kann.
Google schweigt sich so ziemlich aus, es gibt nirgends ein Beispiel wie es mit Lazarus gemacht wird. Delphi Beispiele habe ich gefunden, da muss man ein OLE Objekt anlegen. Stichwort Clipboard Format "CF_HDROP".
Gibt es eine Funktion in Lazarus die man aufrufen kann und der eine Dateiname übergeben kann?
Dankeschön, Grüße Markus
Wenn man eine Datei im Dateibrowser mit Strg+C in die Zwischenablage kopiert und in einem anderen Dateibrowser kann man diese mit Strg+V einfügen und es startet der Kopiervorgang. Soweit die Standard Funktion zum einfachen Kopieren von Dateien von A nach B.
Ich habe mir einen Bildbetrachter geschrieben, das zeigt irgend welche Fotos an. Nun möchte ich gerne in meinem Programm bei dem aktuell sichtbaren Bild Strg+C drücken, so dass dann die Datei bei einem beliebigen anderen Dateibrowser (wie der Windows Datei Explorer) einfügen kann.
Google schweigt sich so ziemlich aus, es gibt nirgends ein Beispiel wie es mit Lazarus gemacht wird. Delphi Beispiele habe ich gefunden, da muss man ein OLE Objekt anlegen. Stichwort Clipboard Format "CF_HDROP".
Gibt es eine Funktion in Lazarus die man aufrufen kann und der eine Dateiname übergeben kann?
Dankeschön, Grüße Markus
Zuletzt geändert von MmVisual am Mi 13. Feb 2019, 19:16, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de
- kupferstecher
- Beiträge: 431
- Registriert: Do 17. Nov 2016, 11:52
Re: Dateilink in Zwischenablage kopieren?
Schau mal, ob hier dabei ist, das du brauchst:
http://wiki.lazarus.freepascal.org/Clipboard
http://wiki.lazarus.freepascal.org/Clipboard
-
- Beiträge: 1580
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Dateilink in Zwischenablage kopieren?
Danke für die Info, anhand der konnte ich noch nach weiteren Wörtern suchen und habe das gefunden:
http://forum.lazarus.freepascal.org/ind ... ic=18637.0
Hier die Unit: Geht nur unter Windows. Bei Linux ist das ganze anders.
http://forum.lazarus.freepascal.org/ind ... ic=18637.0
Hier die Unit: Geht nur unter Windows. Bei Linux ist das ganze anders.
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 582
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 3.8
- CPU-Target: 32+64bit
- Wohnort: Dresden
Re: Dateilink in Zwischenablage kopieren? [gelöst]
Hab mal ein paar Änderungen gemacht.
Für das Kopieren als Datei, z.B.: Windows Explorer, Word ...
Bei oberen Procedure muss jetzt das Form übergeben werden!!!
Für das Kopieren als Bild, z.B.: Word, Paint, IrfanView ...
Für das Kopieren als Datei, z.B.: Windows Explorer, Word ...
Code: Alles auswählen
procedure CopyFilesToClipboardF(Sender: TObject; aFileList: string);
Für das Kopieren als Bild, z.B.: Word, Paint, IrfanView ...
Code: Alles auswählen
procedure CopyFilesToClipboardP(aFile: string);
- Dateianhänge
-
- uClipboardFilePaste.pas
- (1.34 KiB) 242-mal heruntergeladen
LG Maik
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
-
- Beiträge: 1580
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Dateilink in Zwischenablage kopieren? [gelöst]
Dankeschön!
Noch ein allgemeiner Hinweis: Wenn die EXE geschlossen wird wo man "CopyFilesToClipboardF()" ausgeführt hat, so wird die Zwischenablage geleert und Strg+V klappt dann nicht mehr.
Noch ein allgemeiner Hinweis: Wenn die EXE geschlossen wird wo man "CopyFilesToClipboardF()" ausgeführt hat, so wird die Zwischenablage geleert und Strg+V klappt dann nicht mehr.
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 582
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 3.8
- CPU-Target: 32+64bit
- Wohnort: Dresden
Re: Dateilink in Zwischenablage kopieren? [gelöst]
Also bei mir bleibt es erhalten, wenn ich meine Exe schliesse.
Beispiel mit Bild im zip
Beispiel mit Bild im zip
- Dateianhänge
-
CopyPicToClipBoard.zip
- (23.44 KiB) 237-mal heruntergeladen
Zuletzt geändert von sstvmaster am Do 14. Feb 2019, 08:43, insgesamt 1-mal geändert.
LG Maik
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
-
- Beiträge: 1580
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Dateilink in Zwischenablage kopieren? [gelöst]
Doch Stimmt, geht doch richtig. Ich hatte wohl schon zwischendurch nochmal Strg+C gerückt und war mir sicher es nicht gemacht zu haben.
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 582
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 3.8
- CPU-Target: 32+64bit
- Wohnort: Dresden
Re: Dateilink in Zwischenablage kopieren? [gelöst]
Hi,
ich habe CopyFilesToClipboardP nochmal geändert damit man auch andere Bildformate kopieren kann:
Ich habe es mit jpg, tif, gif und bmp probiert.
Meine Zip im Post weiter oben habe ich auch aktualisiert.
ich habe CopyFilesToClipboardP nochmal geändert damit man auch andere Bildformate kopieren kann:
Code: Alles auswählen
procedure CopyFilesToClipboardP(aFile: string);
var
vBMP: TImage;
begin
vBMP:=TImage.Create(nil);
try
vBMP.Picture.LoadFromFile(aFile);
Clipboard.Assign(vBMP.Picture.Bitmap);
finally
vBMP.Free;
end;
end;
Meine Zip im Post weiter oben habe ich auch aktualisiert.
LG Maik
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Re: Dateilink in Zwischenablage kopieren? [gelöst]
Das war aber nicht die ursprüngliche Frage, oder?sstvmaster hat geschrieben: Ich habe es mit jpg, tif, gif und bmp probiert.
Meine Zip im Post weiter oben habe ich auch aktualisiert.
Es ist ein Unterschied, ob man Binärdaten (z.B. ein Bild) oder eine Liste von Dateipfaden (bzw. URIs) in das Clipboard legt.
Mit dem Bild kann der Dateibrowser wahrscheinlich nicht viel anfangen.
-
- Beiträge: 582
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 3.8
- CPU-Target: 32+64bit
- Wohnort: Dresden
Re: Dateilink in Zwischenablage kopieren? [gelöst]
Das ist schon richtig. Dafür ist ja die procedure "CopyFilesToClipboardF" zuständig, siehe CopyPicToClipBoard.zip weiter oben
LG Maik
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
-
- Beiträge: 1580
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Dateilink in Zwischenablage kopieren? [gelöst]
Ich habe jetzt beides in meiner Diashow drin, Strg+C für Bild als Datei kopieren und Strg+B für Bild als Picture kopieren
Wäre das einfügen eines Dateilinks eine brauchbare Erweiterung für Lazarus/FPC?
TClipboard.SetFileLink(FileName: String);
Dann könnte ich dazu ein Mantis Eintrag schreiben.
Das Problem: man müsste es noch für Unix/Darwin dazu erfinden um portabel zu bleiben.

Wäre das einfügen eines Dateilinks eine brauchbare Erweiterung für Lazarus/FPC?
TClipboard.SetFileLink(FileName: String);
Dann könnte ich dazu ein Mantis Eintrag schreiben.
Das Problem: man müsste es noch für Unix/Darwin dazu erfinden um portabel zu bleiben.
EleLa - Elektronik Lagerverwaltung - www.elela.de
Re: Dateilink in Zwischenablage kopieren? [gelöst]
Was jede TForm von Haus aus kann ist, vom Filebrowser gedroppte URIs entgegennehmen, auch auf Linux.
Siehe:
AllowDropFiles
OnDropFiles
Siehe:
AllowDropFiles
OnDropFiles
-
- Beiträge: 1580
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Dateilink in Zwischenablage kopieren? [gelöst]
Ja, das weiß ich, habe ich in einem anderen Programm schon verwendet und funktioniert gut. Nur die andere Richtung fehlt bisher in Lazarus.
EleLa - Elektronik Lagerverwaltung - www.elela.de