Dateilink in Zwischenablage kopieren? [gelöst]

Antworten
MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Dateilink in Zwischenablage kopieren? [gelöst]

Beitrag von MmVisual »

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
Zuletzt geändert von MmVisual am Mi 13. Feb 2019, 19:16, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

Re: Dateilink in Zwischenablage kopieren?

Beitrag von kupferstecher »

Schau mal, ob hier dabei ist, das du brauchst:
http://wiki.lazarus.freepascal.org/Clipboard

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Dateilink in Zwischenablage kopieren?

Beitrag von MmVisual »

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:
uclipbrffilepaste.pas
(923 Bytes) 207-mal heruntergeladen


Geht nur unter Windows. Bei Linux ist das ganze anders.
EleLa - Elektronik Lagerverwaltung - www.elela.de

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Dateilink in Zwischenablage kopieren? [gelöst]

Beitrag von sstvmaster »

Hab mal ein paar Änderungen gemacht.

Für das Kopieren als Datei, z.B.: Windows Explorer, Word ...

Code: Alles auswählen

procedure CopyFilesToClipboardF(Sender: TObject; aFileList: string);

Bei oberen Procedure muss jetzt das Form übergeben werden!!!


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) 216-mal heruntergeladen
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Dateilink in Zwischenablage kopieren? [gelöst]

Beitrag von MmVisual »

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.
EleLa - Elektronik Lagerverwaltung - www.elela.de

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Dateilink in Zwischenablage kopieren? [gelöst]

Beitrag von sstvmaster »

Also bei mir bleibt es erhalten, wenn ich meine Exe schliesse.

Beispiel mit Bild im zip
Dateianhänge
CopyPicToClipBoard.zip
(23.44 KiB) 208-mal heruntergeladen
Zuletzt geändert von sstvmaster am Do 14. Feb 2019, 08:43, insgesamt 1-mal geändert.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Dateilink in Zwischenablage kopieren? [gelöst]

Beitrag von MmVisual »

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

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Dateilink in Zwischenablage kopieren? [gelöst]

Beitrag von sstvmaster »

Hi,

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;


Ich habe es mit jpg, tif, gif und bmp probiert.
Meine Zip im Post weiter oben habe ich auch aktualisiert.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Dateilink in Zwischenablage kopieren? [gelöst]

Beitrag von theo »

sstvmaster hat geschrieben:Ich habe es mit jpg, tif, gif und bmp probiert.
Meine Zip im Post weiter oben habe ich auch aktualisiert.


Das war aber nicht die ursprüngliche Frage, oder?
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.

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Dateilink in Zwischenablage kopieren? [gelöst]

Beitrag von sstvmaster »

Das ist schon richtig. Dafür ist ja die procedure "CopyFilesToClipboardF" zuständig, siehe CopyPicToClipBoard.zip weiter oben
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Dateilink in Zwischenablage kopieren? [gelöst]

Beitrag von MmVisual »

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 :wink:

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

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Dateilink in Zwischenablage kopieren? [gelöst]

Beitrag von theo »

Was jede TForm von Haus aus kann ist, vom Filebrowser gedroppte URIs entgegennehmen, auch auf Linux.
Siehe:
AllowDropFiles
OnDropFiles

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: Dateilink in Zwischenablage kopieren? [gelöst]

Beitrag von MmVisual »

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

Antworten