[Lazarus] GTK2: Drag files to other applications (to the file manager, Thunar, Nautilus, etc)
Mattias Gaertner
nc-gaertnma at netcologne.de
Mon Aug 20 17:50:29 CEST 2012
On Mon, 20 Aug 2012 17:38:45 +0200
Bernd <prof7bit at gmail.com> wrote:
> I have made a working component. See attachment. Use it like this:
>
> { TForm1 }
>
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> DragSource := TFileDragSource.Create(Self);
> DragSource.Control := ScrollBox1;
> DragSource.OnDragBegin := @OnScrollboxDragBegin;;
> DragSource.OnDragEnd := @OnScrollboxDragEnd;;
> DragSource.OnGetData := @OnScrollboxGetData;;
> end;
>
> procedure TForm1.OnScrollboxDragBegin(Sender: TObject);
> begin
> WriteLn('scrollbox drag begin');
> end;
>
> procedure TForm1.OnScrollboxDragEnd(Sender: TObject);
> begin
> WriteLn('scrollbox drag end');
> end;
>
> procedure TForm1.OnScrollboxGetData(Sender: TObject; Data: TStringList);
> begin
> WriteLn('scrollbox drag get data');
> Data.Append('file:///home/bernd/file_a');
> Data.Append('file:///home/bernd/file_b');
> end;
>
> Now the Scrollbox on my form will act as a drag source for dragging
> files to other applications (In a real world application the OnGetData
> handler could for example create these files and supply the file names
> and the OnDragEnd could delete them again). Dragging them to the file
> manager would copy the files, dragging them to an editor would make it
> open them.
Nice. Thanks.
Should I add it to the examples or in a package of its own?
> Now it wold be nice if one of the local windows API Gurus could extend
> this code to also work in windows and maybe someone else make it work
> in Qt and on the Mac also. And eventually this code should go directly
> into the LCL (maybe after also adding the ability to drag arbitrary
> mime types and not only filenames).
Yes.
Mattias
More information about the Lazarus
mailing list