给你个大概的例子 procedure WMDropFiles(var Msg: TWMDropFiles);procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(Handle, True); end;procedure TForm1.FormDestroy(Sender: TObject); begin DragAcceptFiles(Handle, False); end;procedure TForm1.WMDropFiles(var Msg: TWMDropFiles); var Num, I, LvIndexOfDragOver: Integer; FileName: array[0..255] of Char; Point: TPoint; begin Num := DragQueryFile(Msg.Drop, $FFFFFFFF, nil, 0);//取得文件数 DragQueryPoint(Msg.Drop, Point); if WindowFromPoint(Point) = Self.Handle then //Drag onto MainForm for I := 0 to Num - 1 do begin DragQueryFile(Msg.Drop, I, FileName, sizeof(FileName)); addfile(string(FileName), -1); end else //Drag onto lv control begin if lv.GetItemAt(Point.X, Point.Y) <> nil then LvIndexOfDragOver := lv.GetItemAt(Point.X, Point.Y).Index; for I := 0 to Num - 1 do begin DragQueryFile(Msg.Drop, I, FileName, sizeof(FileName)); addfile(string(FileName), LvIndexOfDragOver); Inc(LvIndexOfDragOver); end; end;以上是我的一个程序段,希望对你有帮助
procedure WMDropFiles(var Msg: TWMDropFiles);procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
DragAcceptFiles(Handle, False);
end;procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
Num, I, LvIndexOfDragOver: Integer;
FileName: array[0..255] of Char;
Point: TPoint;
begin
Num := DragQueryFile(Msg.Drop, $FFFFFFFF, nil, 0);//取得文件数
DragQueryPoint(Msg.Drop, Point);
if WindowFromPoint(Point) = Self.Handle then //Drag onto MainForm
for I := 0 to Num - 1 do
begin
DragQueryFile(Msg.Drop, I, FileName, sizeof(FileName));
addfile(string(FileName), -1);
end
else //Drag onto lv control
begin
if lv.GetItemAt(Point.X, Point.Y) <> nil then
LvIndexOfDragOver := lv.GetItemAt(Point.X, Point.Y).Index;
for I := 0 to Num - 1 do
begin
DragQueryFile(Msg.Drop, I, FileName, sizeof(FileName));
addfile(string(FileName), LvIndexOfDragOver);
Inc(LvIndexOfDragOver);
end;
end;以上是我的一个程序段,希望对你有帮助