Via Drag Drop einer Anderen Anwendung eine Datei Senden

Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Via Drag Drop einer Anderen Anwendung eine Datei Senden

Beitrag von corpsman »

Servus,

ich versuche folgendes :

in meiner TForm habe ich ein TLabel dessen Caption heist "C:\Temp\test.txt". Nun will ich via Drag Drop diesen Text in das Notepad++ Dropen, das dieses dann die Datei öffnet.

Mittels TLabel.Dragmode := dmAutomatic; und dem Eventhandler TLabel.EndDrag(..) bekomme ich ein Stück Quellcode, welches beim Ende des Draggings aufgerufen wird.

Da schreibe ich folgendes :

Code: Alles auswählen

 
Procedure TForm1.Label1EndDrag(Sender, Target: TObject; X, Y: Integer);
Var
  h: HWND;
Begin
  h := WindowFromPoint(point(x, y)); // Das hier ist leider immer = 0
  If h <> 0 Then Begin
    PostMessage(h, label1.caption,0,0); // Das geht natürlich auch nicht, noch habe ich nicht raus gefunden wie's richtig geht.
    //If assigned(FindLCLWindow(p)) Then Begin
    //  nop;
    //End;
    nop;
  End;
  nop;
End


Kann mir einer von euch helfen, oder nen Weg zeigen wie man es Richtig macht ?
--
Just try it

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Via Drag Drop einer Anderen Anwendung eine Datei Senden

Beitrag von Michl »

Gut funktioniert bei mir (Windows7) NativeDragDrop von hier: https://github.com/prof7bit/NativeDragDrop

Beispiel für ein TMemo:

- Package installieren und Lazarus neu kompilieren
- eine TNativeDragSource auf dem Formular platzieren
- im OnCreate des Formulars das gewünschte Control mit der TNativeDragSource verbinden (im Objektinspektor funktioniert das bei mir nicht)

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  NativeDragSource1.Control := Memo1;
end;
- im OnGetDragFileList der TNativeDragSource die Datei auswählen, z.B.:

Code: Alles auswählen

procedure TForm1.NativeDragSource1DragGetFileList(
  Sender: TObject; FileList: TStringList);
begin
  Memo1.Lines.SaveToFile('test.txt');
  FileList.Add(ExtractFilePath(paramstr(0)) + 'test.txt');
end

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Via Drag Drop einer Anderen Anwendung eine Datei Senden

Beitrag von corpsman »

Perfekt, genau was ich gesucht habe.

Danke.
--
Just try it

Antworten