TShape Control鼠标拖拽问题?

Jonvy2016 2018-03-03 10:55:58
我以下代码是想当鼠标拖拽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;
...全文
1209 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
var P: TPoint; begin P := Form1.ScreenToClient(Point(X, Y)); ShpST1.Left:=P.X-ShpST1.Width div 2; ShpST1.Top:=P.Y-ShpST1.Height div 2; //...
Jonvy2016 2018-03-14
  • 打赏
  • 举报
回复
那怎么变成 Form的X,Y坐标呢?
引用 2 楼 jinjazz 的回复:
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; 这个中的X和Y是屏幕的坐标,不是Form的坐标
jinjazz 2018-03-06
  • 打赏
  • 举报
回复
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; 这个中的X和Y是屏幕的坐标,不是Form的坐标
ooolinux 2018-03-05
  • 打赏
  • 举报
回复
试试这个代码,BCB的,可以拖动Button1:
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    ReleaseCapture();
    SendMessage( Button1->Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);    
}
//---------------------------------------------------------------------------

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧