Dateilink in Zwischenablage kopieren? [gelöst]

Dateilink in Zwischenablage kopieren? [gelöst]

Beitragvon MmVisual » 13. Feb 2019, 14:54 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
Zuletzt geändert von MmVisual am 13. Feb 2019, 19:16, insgesamt 1-mal geändert.
MmVisual
 
Beiträge: 1059
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon kupferstecher » 13. Feb 2019, 16:42 Re: Dateilink in Zwischenablage kopieren?

Schau mal, ob hier dabei ist, das du brauchst:
http://wiki.lazarus.freepascal.org/Clipboard
kupferstecher
 
Beiträge: 206
Registriert: 17. Nov 2016, 11:52

Beitragvon MmVisual » 13. Feb 2019, 19:16 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:
uclipbrffilepaste.pas


Geht nur unter Windows. Bei Linux ist das ganze anders.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
MmVisual
 
Beiträge: 1059
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon sstvmaster » 13. Feb 2019, 21:54 Re: Dateilink in Zwischenablage kopieren? [gelöst]

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);
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
sstvmaster
 
Beiträge: 196
Registriert: 22. Okt 2016, 22:12
Wohnort: Dresden
OS, Lazarus, FPC: Windows 7 32bit (L 2.0.2 FPC 3.0.4) | 
CPU-Target: 32Bit
Nach oben

Beitragvon MmVisual » 13. Feb 2019, 22:08 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.
MmVisual
 
Beiträge: 1059
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon sstvmaster » 13. Feb 2019, 22:21 Re: Dateilink in Zwischenablage kopieren? [gelöst]

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

Beispiel mit Bild im zip
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von sstvmaster am 14. Feb 2019, 08:43, insgesamt 1-mal geändert.
sstvmaster
 
Beiträge: 196
Registriert: 22. Okt 2016, 22:12
Wohnort: Dresden
OS, Lazarus, FPC: Windows 7 32bit (L 2.0.2 FPC 3.0.4) | 
CPU-Target: 32Bit
Nach oben

Beitragvon MmVisual » 13. Feb 2019, 22:38 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.
MmVisual
 
Beiträge: 1059
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon sstvmaster » 14. Feb 2019, 08:48 Re: Dateilink in Zwischenablage kopieren? [gelöst]

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.
sstvmaster
 
Beiträge: 196
Registriert: 22. Okt 2016, 22:12
Wohnort: Dresden
OS, Lazarus, FPC: Windows 7 32bit (L 2.0.2 FPC 3.0.4) | 
CPU-Target: 32Bit
Nach oben

Beitragvon theo » 14. Feb 2019, 11:11 Re: Dateilink in Zwischenablage kopieren? [gelöst]

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.
theo
 
Beiträge: 8166
Registriert: 11. Sep 2006, 18:01

Beitragvon sstvmaster » 14. Feb 2019, 11:19 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
sstvmaster
 
Beiträge: 196
Registriert: 22. Okt 2016, 22:12
Wohnort: Dresden
OS, Lazarus, FPC: Windows 7 32bit (L 2.0.2 FPC 3.0.4) | 
CPU-Target: 32Bit
Nach oben

Beitragvon MmVisual » 14. Feb 2019, 11:51 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 :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.
MmVisual
 
Beiträge: 1059
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon theo » 14. Feb 2019, 12:02 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
theo
 
Beiträge: 8166
Registriert: 11. Sep 2006, 18:01

Beitragvon MmVisual » 14. Feb 2019, 12:24 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.
MmVisual
 
Beiträge: 1059
Registriert: 10. Okt 2008, 22:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3) | 
CPU-Target: 32/64Bit
Nach oben

• Themenende •

Zurück zu Windows



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried