拖放编程,关于判断是否接收拖放对象

Harryfin 2010-12-08 03:21:19
一般是在OnDragOver里面判断,但考虑以下情况:

我的接收对象是一个ListBox,我希望拖到ListBox上时(DragOver),都是显示可接收的(图标)。但具体放下去时,再根据不同的列表项,实际判断是否可接收,不可接收时,弹出个提示。

这样的需求应该怎样做呢?因为OnDragDrop中是无参数返回是否可接收的。虽然可以抛异常,但是这个异常无法捕捉到(只能默认弹出),可以的话,最好有其它的方法。

谢谢
...全文
97 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Harryfin 2010-12-27
  • 打赏
  • 举报
回复
散分了。。无满意答复
Harryfin 2010-12-09
  • 打赏
  • 举报
回复
不是说拖放文件进界面,只是界面内部的那种拖放操作而已。
keeley20 2010-12-08
  • 打赏
  • 举报
回复
我的是一个Edit,楼主的是Listbox,楼主的意思是不是拖放进去 需要判断被拖放的文件是否符合规矩,如果是则添加,不是则跳过?
Harryfin 2010-12-08
  • 打赏
  • 举报
回复
这个貌似跟我说的情况有些不同
keeley20 2010-12-08
  • 打赏
  • 举报
回复

private
{ Private declarations }
procedure DropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;

procedure TFormCalcHash.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
end;

procedure TFormCalcHash.DropFiles(var Msg: TWMDropFiles);
var
Buffer:array[0..MAX_PATH] of char;
TheFile:string;
Counter,i : Integer;
begin
//if WindowFromPoint(Mouse.CursorPos) = sGroupBox2.Handle then begin
Counter := DragQueryFile(Msg.Drop, $FFFFFFFF, nil, MAX_PATH);
for i := 0 to Counter - 1 do begin
DragQueryFile(Msg.Drop,i,@Buffer,SizeOf(Buffer));
TheFile := Copy(Trim(Buffer),0,SizeOf(Buffer));
if TheFile <> xxxxthen exit else
Self.FileEdt.Text:=TheFile; //这里判断下,
end;
//end;
DragFinish(Msg.Drop);
Msg.Result := 0;

end;


在上面那里判断可以吗,比如说文件后缀名,或者文件大小

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧