Via Drag Drop einer Anderen Anwendung eine Datei Senden

Via Drag Drop einer Anderen Anwendung eine Datei Senden

Beitragvon corpsman » 1. Sep 2015, 11:05 Via Drag Drop einer Anderen Anwendung eine Datei Senden

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
corpsman
 
Beiträge: 1041
Registriert: 28. Feb 2009, 08:54
Wohnort: Stuttgart
OS, Lazarus, FPC: Kubuntu 14.04, Lazarus SVN Trunk, FPC 3.0 | 
CPU-Target: 32Bit
Nach oben

Beitragvon Michl » 1. Sep 2015, 11:38 Re: Via Drag Drop einer Anderen Anwendung eine Datei Senden

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; 
Michl
 
Beiträge: 2258
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon corpsman » 1. Sep 2015, 12:24 Re: Via Drag Drop einer Anderen Anwendung eine Datei Senden

Perfekt, genau was ich gesucht habe.

Danke.
--
Just try it
corpsman
 
Beiträge: 1041
Registriert: 28. Feb 2009, 08:54
Wohnort: Stuttgart
OS, Lazarus, FPC: Kubuntu 14.04, Lazarus SVN Trunk, FPC 3.0 | 
CPU-Target: 32Bit
Nach oben

• Themenende •

Zurück zu Windows



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried