请问delphi控件的双击事件和拖动事件有冲突怎么办?
双击时,自动变成了拖动,郁闷啊。。。
[解决办法]
。。。。。。你用的什么控件?
[解决办法]
是不是直前自生成的事件代,你有注所致?把件相代出看看。。。
[解决办法]
你是想要什么效果呢??说清楚点??
[解决办法]
Image控件的Dragmode := dmManual;
procedure TForm1.Image1DblClick(Sender: TObject);
begin
Label3.Caption := Inttostr(gettickcount);
Label1.Caption := 'dbclick';
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
TImage(sender).BeginDrag(False);
end;
procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := True;
end;
procedure TForm1.Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
Label6.Caption := 'move';
end;
不要用showmessage看效果~~
[解决办法]
var bDragDown : boolean;
procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Sender is TImage then
begin
bDragDown := button = mbleft;
end;
end;
procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if bDragDown then
begin
TImage(Sender).BeginDrag(False);
end;
end;
procedure TForm1.ImageDragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
if Tcontrol(source) is timage then
begin
//处理
TImage(Source).EndDrag(false);
end;
end;
procedure TForm1.ImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Sender is TImage then
begin
bDragDown := false;
end;
end;
试试这样行不..
[解决办法]
你不要在DblClick中使用showmessage来看效果。
那样会影响程序的执行流程。你可以加一个memo,往里面写日志来查看执行流程
[解决办法]
DblClick中如果showmodal窗体,可以在窗体的create后面加个标志变量。用来区分双击和拖拽。
或者你就不要用双击了,用右键菜单吧
[解决办法]
你这个要求吧,就得去区分单击,双击事件
双击事件先触发的就是MouseDown消息。
[解决办法]
你最好把你老板的要求给大家说一下,不要纠结在拖放和双击上面。