如何处理拖拽与双击的冲突。(100分)

  • 主题发起人 主题发起人 hmily1688
  • 开始时间 开始时间
H

hmily1688

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(!]我动太创建了一组Tlabel在一个Panel上,可以进行拖拽,如果双击可以进行编辑.问题是我一双
击就认为我拖拽了,如果把拖拽屏蔽掉就可以,who help me ?
代码如下,
TLabel * NewLab=new TLabel(this);
{
NewLab->Parent=Panel1;
NewLab->Name=String("MyTmplab")+String(this->ComponentCount+1);
NewLab->Tag=100;
NewLab->Caption=Trim(ChangeLabel("请输入"));
NewLab->DragMode=dmAutomatic;//如果这一行屏蔽就能执行。dbclick事件
NewLab->Left=10;
NewLab->AutoSize=true;
NewLab->OnDblClick=dbclick;
NewLab->Visible=true;
}
 
问题已解决,谁进来领分。
解决方法,将拖拽改为手动,
NewLab->OnMouseDown=mousedown;
在新建 的mousedown事件中
TLabel *MyLabel=NULL;
if (Sender->ClassNameIs("TLabel"))
{
MyLabel=dynamic_cast<TLabel*>(Sender);//一定要有,不然出现av冲突.
MyLabel->begin
Drag(false);
}
 
添加一个OnDragDrop事件,
在OnDragDrop事件里更改属性:Newlab->DragMode= dmmanual ;
再在dbclick的最末行将此属性改回来Newlab->DragMode= dmAutomatic;
 
接受答案了.
 
凑热闹,领分啦![:D]
 
我的方法也是测试通过的哦
 
[:(] 晕,晚来一步!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
844
DelphiTeacher的专栏
D
后退
顶部