如何拖放构件?(200分)

  • 主题发起人 主题发起人 马晓明
  • 开始时间 开始时间

马晓明

Unregistered / Unconfirmed
GUEST, unregistred user!
各位朋友,大家好!

我动态建立了一些TPanel构件,让它们排列在一个TScrollBox构件中。
我想拖放这些建立的Panel,但是我对拖放构件不明白。我曾经把一个Panel
构件拖放到窗体中做实验,首先设置它的DragMode属性为dmAutomatic,
然后运行程序后却无法拖放它,这是为什么?我看了Delphi中关于拖放的帮助,
但是看不明白。像OnStartDrag、OnOverDrag、OnEndDrag、OnDragDrop……
也不知该如何使用。我的目的是选中一个Panel,在其它的Panel或ScrollBox上拖放,
如果放在其它的Panel上,则占据这个Panel的位置,重新排列Panel,
如果放置在ScrollBox上,则只是重新排列Panel的顺序。这类似于Photoshop
中的Layer面板技术。希望大家给我出些主意。非常感谢。

马晓明
 
你的意思应该是DOCK吧
事件顺序
左间按下,如果自动托拽,则beginDrag,被拖Control的事件OnStartDrag会被调用
然后就是鼠标托拽所经过的WinControl的DragOver事件,如果Accept则可以在这里OnDragDrop
否则不Accept,不能释放,
OnDragDrop中处理。
具体自己看看Control,WinControl这几个事件的元马,

Dock的话,其实Delphi可以自己处理的,
被拖的设为dmAutomatic,方式设为Dock,宿主也设一下,可以自动实现的
 
Hi

谢谢你对我的帮助。我还需要几天来研究一下这项技术。帮助里全是英文,
我需要时间来翻译它们。请稍等。谢谢!

马晓明
 
接受答案了.
 
后退
顶部