DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: 123glimmer
今日帖子: 19
在线用户: 16
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 magiewang (magiewang) ▲▲△△△ -
注册会员
2021/3/23 13:16:01
标题:
求教从外部拖放文件到程序里一个组件上时,如何高亮这个组件。 浏览:322
加入我的收藏
楼主: 求教从外部拖放文件到程序里一个组件上时,如何高亮这个组件。
----------------------------------------------
-
作者:
男 keymark (keymark) ▲▲△△△ -
注册会员
2021/3/23 14:05:05
1楼: 看下鼠标事件按此在新窗口浏览图片
我记得有个控件老外的专门处理拖放 搜英文
----------------------------------------------
播客
作者:
男 hi100 (hi100) ▲▲▲△△ -
注册会员
2021/3/23 14:54:03
2楼: https://blog.csdn.net/weixin_30302609/article/details/98072922
----------------------------------------------
-
作者:
男 magiewang (magiewang) ▲▲△△△ -
注册会员
2021/3/24 9:44:28
3楼: @keymark 鼠标事件在拖放结束后才收到。
----------------------------------------------
-
作者:
男 keymark (keymark) ▲▲△△△ -
注册会员
2021/3/24 10:22:53
4楼: http://melander.dk/delphi/dragdrop/
这个老外的。  其他的不记得有专门的控件了。
----------------------------------------------
播客
作者:
男 keymark (keymark) ▲▲△△△ -
注册会员
2021/3/24 11:30:43
5楼: {**********}
{          }
{          Delphi Visual Component Library          }
{          }
{ Copyright(c) 1995-2021 Embarcadero Technologies, Inc. }
{          All rights reserved          }
{          }
{**********}

unit Vcl.Controls;

FindDragTarget
----------------------------------------------
播客
作者:
男 magiewang (magiewang) ▲▲△△△ -
注册会员
2021/3/24 13:17:33
6楼: 谢谢keymark,现在使用的就是The Drag and Drop Component Suite控件,
能触发DrapOver,但是用FindDragTarget取不到当前鼠标位置的控件。

  var lpClient, lpPoint : TPoint;
  GetCursorPos(lpPoint);
  lpClient := ScreenToClient(lpPoint);
  var cControl : TControl;
  cControl := ControlAtPos(lpClient, True, True);

用ControlAtPos只能取到当前鼠标指向最父层的控件,比如Panel里放了几个控件,这几个控件取不到的,只能取到Panel,不知道哪位大神指导怎么处理?谢谢。
----------------------------------------------
-
作者:
男 jackalan (nVicen) ★☆☆☆☆ -
盒子活跃会员
2021/3/24 13:33:54
7楼: function TWinControl.ControlAtPos(const Pos: TPoint; AllowDisabled,
  AllowWinControls, AllLevels: Boolean): TControl;

ControlAtPos第四个参数AllLevels要设定为TRUE

在The-Drag-and-Drop-Component-Suite控件的DragOver事件里:
.........
  var lpClient, lpPoint : TPoint;
  GetCursorPos(lpPoint);
  lpClient := ScreenToClient(lpPoint);
  var cControl : TControl;
  cControl := ControlAtPos(lpClient, True, True, True);
  if Assigned(cControl) then 
     这里处理你的事情吧
----------------------------------------------
简单做人,认真做事。
作者:
男 jackalan (nVicen) ★☆☆☆☆ -
盒子活跃会员
2021/3/24 13:36:12
8楼: 从外部DragDrop Files使用的是COM,所以用WINDOWS消息没法处理
DragOver,Drag-and-Drop-Component是目前最好的COM DragDrop组
件。

配合上面代码,可以做到Drag到控件的控件特效。
----------------------------------------------
简单做人,认真做事。
作者:
男 magiewang (magiewang) ▲▲△△△ -
注册会员
2021/3/24 13:37:55
9楼: jackalan 万分感谢!!!!!
终于搞定了,现在可以精确到拖放任意控件了。
----------------------------------------------
-
作者:
男 keymark (keymark) ▲▲△△△ -
注册会员
2021/3/24 16:41:38
10楼: demos里面就有托放到的控件变色,按此在新窗口浏览图片
https://github.com/landrix/The-Drag-and-Drop-Component-Suite-for-Delphi/blob/02304fe104cdfd679c33ff734c7f7cd73a0768ee/Demos/MultipleTargets/main.pas#L109
----------------------------------------------
播客
作者:
男 magiewang (magiewang) ▲▲△△△ -
注册会员
2021/3/25 8:57:00
11楼: @keymark 那个DEMO用的是Enter/Leave事件,COM拖放时,这两个事件是不触发的,在程序内的拖放和COM的不一样。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行15.625毫秒 RSS