|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2021/3/23 13:16:01 |
标题: |
求教从外部拖放文件到程序里一个组件上时,如何高亮这个组件。 |
浏览:1563 |
|
加入我的收藏 |
楼主: |
求教从外部拖放文件到程序里一个组件上时,如何高亮这个组件。
----------------------------------------------
- |
作者: |
|
2021/3/23 14:05:05 |
1楼: |
看下鼠标事件 我记得有个控件老外的专门处理拖放 搜英文
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
|
作者: |
hi100 (hi100) |
▲▲▲▲△ |
-
|
普通会员 |
|
2021/3/23 14:54:03 |
2楼: |
https://blog.csdn.net/weixin_30302609/article/details/98072922
----------------------------------------------
-
|
作者: |
|
2021/3/24 9:44:28 |
3楼: |
@keymark 鼠标事件在拖放结束后才收到。
----------------------------------------------
-
|
作者: |
|
2021/3/24 10:22:53 |
4楼: |
http://melander.dk/delphi/dragdrop/ 这个老外的。 其他的不记得有专门的控件了。
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
|
作者: |
|
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
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
|
作者: |
|
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,不知道哪位大神指导怎么处理?谢谢。
----------------------------------------------
-
|
作者: |
|
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 这里处理你的事情吧
----------------------------------------------
简单做人,认真做事。
|
作者: |
|
2021/3/24 13:36:12 |
8楼: |
从外部DragDrop Files使用的是COM,所以用WINDOWS消息没法处理 DragOver,Drag-and-Drop-Component是目前最好的COM DragDrop组 件。
配合上面代码,可以做到Drag到控件的控件特效。
----------------------------------------------
简单做人,认真做事。
|
作者: |
|
2021/3/24 13:37:55 |
9楼: |
jackalan 万分感谢!!!!! 终于搞定了,现在可以精确到拖放任意控件了。
----------------------------------------------
-
|
作者: |
|
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
----------------------------------------------
[alias] co = clone --recurse-submodules up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
|
作者: |
|
2021/3/25 8:57:00 |
11楼: |
@keymark 那个DEMO用的是Enter/Leave事件,COM拖放时,这两个事件是不触发的,在程序内的拖放和COM的不一样。
----------------------------------------------
-
|
|