关于ADVStringGrid实现拖放的为问题(100分)

  • 主题发起人 主题发起人 狐狸精
  • 开始时间 开始时间

狐狸精

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个ADVStringGrid在From上,我要从第一个把需要的数据拖到第二个中。
第一个的属性值:
OleAcceptfiles:true
OleAcceptText :true
OleDropSource :true
OleEntireRows :true
OleRemoveRows :true
其他OLExxxx的属性为false;

第二个属性值:
OleAcceptfiles:true
OleAcceptText :true
OleDropSource :true
OleDropTarget :true
OleEntireRows :true
OleRemoveRows :true
其他OLExxxx的属性为false;

这时已经能实现拖放的功能,但会把源ADVStringGrid中的数据剪切过来,需按住Ctrl键
才能实现Copy的过程。(我要的Copy数据到目的ADVStringGrid)。
所以我想在OnOleDrag、OnOleDragover、OnOleDragStart、OnOleDragStop事件中写写代码
有谁有现成的例子吗?(或告诉我方法也行)
拜托各位老大了。[8D][:(]

 
ADVStringGrid那里有载?
 
怎么没人理我??是不是分值太少?只要给我答案,我可以再给300分[:(][:(]
 
没人回答就算了,告诉偶怎么删除这些自己的没人回答的问题?
我留着分去问别的问题去。
 
这个东东bug 多多
思路
第一个grid开始拖的时候advgrid.CopySelectionToClipboard;复制到剪贴板
在第二个grid的droped事件中PasteSelectionFromClipboard;
理论上是可以的,但。。。。。他只能拖拽第一个单元格,其他的不行
郁闷
 
例子没有,但可以这样处理。
OLExxx的调用顺序是这样的:
OLEDrag -> OLEDragStart ->
OLEDragOver -> OLEDragStop
其中无论DragDrop是否执行,前三个事件都会触发,执行了会触发最后一个。另外,前两个只触发一次,第三个次数很多,停留时间长会多一些,但不会无限制增长。
还有,该控件的作者应该是按Windows缺省的方式来制作的(即按Ctrl才是Copy),所以要达到你的要求估计要改源码。

目的方的。
当Drap到目的时,目的触发 Drag Over,会有很多次。如果Drop成功,依次触发 Drop,Dropped各一次。
另,目的触发的 Drag Over 次数多于源触发的次数。

处理Copy数据问题可以通过虚拟按键来解决
 
接受答案了.
 
后退
顶部