Drag&Drop aus externer Anwendung

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
wennerer
Beiträge: 607
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Drag&Drop aus externer Anwendung

Beitrag von wennerer »

Hallo,
weiß jemand ob es möglich ist aus einer externen Anwendung (zum Beispiel Browser) Text in eine Zelle eines Stringgrids zu ziehen?
Ich habe dazu leider nichts gefunden.
DragDrop.gif
DragDrop.gif (113.86 KiB) 3992 mal betrachtet
Von einem Edit klappt es schon (auch wenn der Cursor nicht passt).

Viele Grüße
Bernd
Dateianhänge
project1.zip
(139.91 KiB) 95-mal heruntergeladen

Soner
Beiträge: 724
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Drag&Drop aus externer Anwendung

Beitrag von Soner »

Soweit ich mich erinnern kann, hatte das A. Melanders Drag&Drop-Komponente. Irgendjemand hat das auf Lazarus portiert. Such bei OPM nach DragDrop.
Das ist aber nur für Windows.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6762
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Drag&Drop aus externer Anwendung

Beitrag von af0815 »

Ich bin mir nicht sicher, aber ist das nicht im DoubleCommander gelöst ? Der ist ja fpc/Lazarus basierend.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 359
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Drag&Drop aus externer Anwendung

Beitrag von Jorg3000 »

Hallo!
Die in FreePascal enthaltenen Drag&Drop-Ereignisse/Methoden beziehen sich immer auf ein TDragObject, das auf ein Control in der eigenen Anwendung zeigt.
Damit ist es also nicht möglich, irgendwas von außerhalb der eigenen Anwendung zu empfangen.

Eine Ausnahme ist OnDropFiles (AllowDropFiles), aber das bezieht sich wirklich nur auf Dateien (Dateinamen). Andere externe Inhalte scheinen nicht vorgesehen zu sein.

Die notwendigen plattformabhängigen Dragging-Mechanismen scheint die oben verlinkte Komponente mitzubringen. Eventuell hat es auch etwas mit Docking zu tun, wobei kein Fenster, sondern andere Inhalte "angedockt" werden.

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

Re: Drag&Drop aus externer Anwendung

Beitrag von theo »

Naja, aber ein bisschen geht das schon. Was erwartet ihr genau?
Auf dem Formular "AllowDropFiles:=true" und das Ereignis "OnDropFiles" einhängen.
Dann bekomme ich so einen Dateinamen in die gewünschte Zelle des StringGrid1:

Code: Alles auswählen

procedure TForm1.FormDropFiles(Sender: TObject; const FileNames: array of string);
var p: TPoint;
begin
    p := Mouse.CursorPos;
    if PtInRect(StringGrid1.BoundsRect, Form1.ScreenToClient(p)) then
    begin
      p := StringGrid1.ScreenToClient(p);
      p := StringGrid1.MouseToCell(p);
      StringGrid1.Cells[P.X, P.Y] := ExtractFileName(FileNames[0]);
    end;
end;   
Bei mir auf Linux/KDE fügt das auch z.B. markierte Texte aus dem Webbrowser ein. Merkwürdig, aber ist so.

Mathias
Beiträge: 6899
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Drag&Drop aus externer Anwendung

Beitrag von Mathias »

Bei mir auf Linux/KDE fügt das auch z.B. markierte Texte aus dem Webbrowser ein. Merkwürdig, aber ist so.
Ist dies kein Bug ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Drag&Drop aus externer Anwendung

Beitrag von theo »

Mathias hat geschrieben: Di 11. Feb 2025, 15:56
Bei mir auf Linux/KDE fügt das auch z.B. markierte Texte aus dem Webbrowser ein. Merkwürdig, aber ist so.
Ist dies kein Bug ?
Es ist ein Wunder! :wink:

Nein, wieso? Das tut ja keinem weh.
Es kann höchstens sein, dass es auf Win nicht so funktioniert. Das weiss ich aber nicht.

wennerer
Beiträge: 607
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Drag&Drop aus externer Anwendung

Beitrag von wennerer »

Hallo,
zunächst allen vielen Dank für die Antworten. Ich werde mit euere Vorschläge alle Ansehen.
Zunächst hab ich den Code von Theo versucht. Leider klappt das bei mir unter Mint nicht. Was ich aber in dem Zug festgestellt hab ist das ich vom Browser in das Editfeld Text ziehen kann. Und zwar geht das auch ganz ohne Code. Warum auch immer.

Viele Grüße
Bernd

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

Re: Drag&Drop aus externer Anwendung

Beitrag von theo »

wennerer hat geschrieben: Di 11. Feb 2025, 16:54 Was ich aber in dem Zug festgestellt hab ist das ich vom Browser in das Editfeld Text ziehen kann. Und zwar geht das auch ganz ohne Code. Warum auch immer.
Das steht in dem von dir zitierten Text unter Problem 2.
https://wiki.freepascal.org/Drag_and_Dr ... C3%A4utert

wennerer
Beiträge: 607
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Drag&Drop aus externer Anwendung

Beitrag von wennerer »

Danke!

Antworten