TShape Control鼠标拖拽问题?
我以下代码是想当鼠标拖拽ShpST1是,松开鼠标后ShpST1在 鼠标当前位置 ,可是当我仅在ShpST1内拖拽时,会跑到莫名奇妙的位置,当拖拽在ShpST1外部时,则能满足要求?这是什么原因?怎样解决?
在ShpST1内拖拽时得到的位置X,Y不是Form1的X,Y吗?
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (Sender is TShape) then
accept:=true;
end;
procedure TForm1.ShpST1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (Source is TShape) then
accept:=true;
end;
procedure TForm1.ShpST1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
ShpST1.Brush.Color:=clHighLight;
ShpST1.Left:=X-ShpST1.Width div 2;
ShpST1.Top:=Y-ShpST1.Height div 2;
end;
procedure TForm1.ShpST1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then
(Sender as TShape).BeginDrag(false);
end;