关于DragDrop的问题(100分)

  • 主题发起人 蒋劲刚
  • 开始时间

蒋劲刚

Unregistered / Unconfirmed
GUEST, unregistred user!
在DRAG开始时,被drag对象(是一图形)
如何随MOUSEPOINT一起移动?
类似于资源管理器中,拖动一文件时
文件名随mousepoint一起移动一样。

敬请各位专家帮忙!谢谢!
 
这个是自动的吧。
将对象的DragMode属性设置成dmAutomatic,就可以用鼠标对其进行
拖动了。(虽然拖动动作是否承认编程处理)
特别象 TListView 和 TTreeView,这些拖动的效果特别明显。
 
这个问题么,需要自己编程啊.

方法1: 自己改鼠标图像吧,把 BitMap改成cursor,再设鼠标图像是这个cursor.
拖完了就自己改回来.为了保证拖动效果,可能要处理好透明色的问题.

方法2: 自己改bitmap的位置.
比如,可以单独做一个窗口,没有边框,但是是stayontop的,里面只有这么
一个bitmap,你开始拖之后就每次鼠标移动就去改这个窗口的坐标,看起来
就变成你要的效果了.

如果一定要透明,就做一个透明form吧.

如果是在一个敞口内部的,也可以用panel.
 
一定要自己编程的.

蒋兄要的是拖动大图像,改鼠标恐怕不行也不好.
可行的办法是做一个无边框的form,把图像画在上面.
然后响应OnDrogDrop, OnDropOver随着鼠标的拖动而动......

ps: 蒋兄,我们是家门,我们两个的名字很象耶! <font color="#0000ff">*_*</font>
 
抗议!茶叶蛋,不要拉关系!! :)

改鼠标还是可行的,把Bitmap缩小到指定的大小就可以了。
...canvas.StrengthCopy( )
不知道有没有拼错.

 
何必要缩小图像呢?M$的windows拖拉文件的时候也没有把icon的图标
改成Cursor大小啊!
 
procedure tresbutton.MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
inherited mousedown(button,shift,x,y);
if button=mbleft then
begin
ReleaseCapture;
(self as TWinControl).Perform (
wm_SysCommand, sc_DragMove, 0);
end;
end;

就这么简单
 
有一个TDRAGIMAGELIST 控件,不知大家用过没有,
好象是用来实现本功能的,但我用不好。

请大家多多指教!谢谢!

 
不知道彩色Cursor是怎样创建的
 
图标不需要作单独的窗口吧,直接在ScreenDC上用
图形透明动画算法就可以了。不过画起来太麻烦,还不如不实现这样的功能,
用DELPHI的缺省实现,不是也能达到一样的功能,何必这么麻烦,
应该把精力用在客户最需要的功能上。
 
多人接受答案了。
 
顶部