// Hiermit kann man
Pfad und Namen von Dateien anzeigen lassen,
// welche vom Explorer oder Desktop
(oder von anderen
Programmen, die
//
dafür vorbereitet sind)
mit der Maus auf ein Memo gezogen werden.
// Getestet mit D4 unter WinME
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure Memo1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
procedure wmdropfiles(var msg: TMessage); message wm_dropfiles;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses shellapi, comctrls;
procedure TForm1.FormCreate(Sender: TObject);
begin
dragacceptfiles(handle, true);
end;
procedure TForm1.Memo1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := Source is TListview;
end;
procedure TForm1.wmdropfiles(var msg: TMessage);
var pt: TPoint;
i, len, count: integer;
filename: string;
begin
dragquerypoint(msg.wparam, pt);
if ptinrect(memo1.boundsrect, pt) then begin
count := dragqueryfile(msg.wparam, $FFFFFFFF, nil, 0);
for i := 0 to count - 1 do begin
len := dragqueryfile(msg.wparam, i, nil, 0);
setlength(filename, len);
dragqueryfile(msg.wparam, i, pchar(filename), len + 1);
memo1.lines.add(filename);
end;
end;
dragfinish(msg.wparam);
end;
|