我有一个需要包含文件列表的 ListBox。我需要用户选择一个或多个文件而不是将文件拖放到 ListBox 上的功能。删除文件时,会使用文件名创建项目。这很好用,但问题是,当我将文件拖放到 ListBox 内动态创建的项目上时,文件图标仍然作为“幽灵”绘制在桌面上。请查看以下屏幕截图以获取更多详细信息:
此“sample.txt”图标保留在桌面上。谁能告诉我我做错了什么?
这是用于拖放操作的代码:
procedure TTestForm.FileListBoxDragDrop(Sender: TObject; const Data: TDragObject;
const Point: TPointF);
var
i: integer;
item: TListBoxItem;
begin
try
FileListBox.BeginUpdate;
for i := Low(Data.Files) to High(Data.Files) do begin
Item := TListBoxItem.Create(Self);
Item.Text := ExtractFileName(Data.Files[i]);
Item.Parent := FileListBox;
end;
finally
FileListBox.EndUpdate;
end;
end;
procedure TTestForm.FileListBoxDragOver(Sender: TObject; const Data: TDragObject;
const Point: TPointF; var Accept: Boolean);
begin
Accept := True;
end;