1. private //窗体移动;
  2. OldPos,NewPos:TPoint;
  3. bMove:Boolean;
  4.  
  5. procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  6. Shift: TShiftState; X, Y: Integer);
  7. begin
  8. bMove:=True;
  9. OldPos:=ClientToScreen(Point(X,Y));
  10. end;
  11.  
  12. procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  13. Y: Integer);
  14. begin
  15. if not bMove then Exit;
  16. NewPos:=ClientToScreen(Point(X,Y));
  17. Left:=Left+NewPos.X-OldPos.X;
  18. Top:=Top+NewPos.Y-OldPos.Y;
  19. OldPos:=NewPos;
  20. end;
  21.  
  22. procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  23. Shift: TShiftState; X, Y: Integer);
  24. begin
  25. bMove:=False;
  26. end;  

拓展:以此让一个控件可移动;

  1. //变量
  2. isMouseDown : boolean ; //是否拖拽
  3. posX,posY : Integer; //拖动开始时候的坐标
  4.  
  5. procedure TForm1.edt2MouseDown(Sender: TObject; Button: TMouseButton;
  6. Shift: TShiftState; X, Y: Integer);
  7. begin
  8. isMouseDown := True; //告诉窗体我要拖了
  9. posX := Mouse.CursorPos.X - edt2.Left ; //记录开始的位置
  10. posY := Mouse.CursorPos.Y - edt2.Top ; //
  11. end;
  12.  
  13. procedure TForm1.edt2MouseMove(Sender: TObject; Shift: TShiftState; X,
  14. Y: Integer);
  15. begin
  16. if isMouseDown then //鼠标是按下状态(要拖)
  17. begin
  18. edt2.Left := Mouse.CursorPos.X - posX ; //新的位置
  19. edt2.Top := Mouse.CursorPos.Y - posY ;
  20. end;
  21. end;
  22.  
  23. procedure TForm1.edt2MouseUp(Sender: TObject; Button: TMouseButton;
  24. Shift: TShiftState; X, Y: Integer);
  25. begin
  26. isMouseDown := False; //告诉窗体我拖完了
  27. end;

控件移动

实现窗体随着鼠标移动(控件)--《用delphi开发共享软件》-15.1任务管理器的更多相关文章

  1. (转)C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上

    原文地址:http://www.cnblogs.com/08shiyan/archive/2011/04/14/2015758.html /********************** * 课题:将窗 ...

  2. WinForm 鼠标进入移开窗体事件,因子控件导致的误触发

    /// <summary> /// 重写OnControlAdded方法,为每个子控件添加MouseLeave事件 /// </summary> /// <param n ...

  3. c# Winform 继承窗体 无法拖动修改控件大小

    问题描述: 一个窗体集成父窗体,发现无法直接拖动修改的控件,比如修改大小等 特征: 不禁使父窗体控件,就算新加一个控件也会这样:鼠标放到控件移动手方块上会出现一个“继承的控件”的tooptip, 异常 ...

  4. 关于WinForm引用WPF窗体---在Winform窗体中使用WPF控件

    项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...

  5. C#设置鼠标在控件上面时,改变光标形状

    //设置鼠标在控件上面时,改变光标形状 private void pictureBox_macroLogo_MouseHover(object sender, System.EventArgs e) ...

  6. winfrom窗体中嵌套WPF控件

    前言 本文主要介绍如何在winfrom窗体中嵌套WPF控件, 一来是自己记录一下,而来希望能对有需要的朋友提供实现思路. 如有错误请指出...下面进入正题... -1.前期准备 准备一个建立好的win ...

  7. WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件

    在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件.例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开.在这个过程中,控 ...

  8. C#窗体加载和控件加载不同步导致控件闪烁

    窗体加载和控件加载不同步导致的控件闪烁现象:// 代码块加在父窗体中的任意位置,解决窗体加载和控件加载不同步导致的控件闪烁问题        protected override CreatePara ...

  9. WPF Prism MVVM 中 弹出新窗体. 放入用户控件

    原文:WPF Prism MVVM 中 弹出新窗体. 放入用户控件 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_37214567/artic ...

随机推荐

  1. 【XLL API 函数】 xlDefineBinaryName

    用于为 xltypeBigData XLOPER/XLOPER12 分配永久存储名称.用于定义 workbook 保存的位名称,并能在任何时候通过定义名称来访问. 函数原型 Excel12(xlDef ...

  2. ODBC连接发生错误:未发现数据源名称并且未指定默认驱动程序

    程序在使用ODBC方式连接数据库时发生错误: ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序. 什么原因造成的呢? 本人使用&l ...

  3. iOS进阶面试题----多线程

    1 多线程是什么 多线程是个复杂的概念,按字面意思是同步完成多 项任务,提高了资源的使用效率,从硬件.操作系统.应用软件不同的角度去看,多线程被赋予不同的内涵,对于硬件,现在市面上多数的CPU都是多核 ...

  4. osg设置相机参数,包括初始位置

    严重注意!!!以下设置必须在viewer.realize();之后,否则不起作用!!!! 设置相机的位置,可以通过CameraManipulator(一般是osgGA::TrackballManipu ...

  5. Android -- startActivityForResult-------&&&----setResult

    startActivityForResult与startActivity的不同之处 startActivity( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivit ...

  6. NMON中的各项参数指标

    一.NMON中的各项参数指标: SYS_SUMM:显示当前服务器的总体性能情况 Total System I/OStatistics:Avg tps during an interval:显示采集间隔 ...

  7. kvm 下运行的 WINWS7磁盘空间不足 增加磁盘 实战(这个有问题,还未解决)

    创建一个新硬盘: [root@NB vhost]# qemu-img create -f qcow2 add_win_desk.img 5G Formatting encryption=off clu ...

  8. 自定义log日志

        Log.cs (这个已经不能用了,用下面的问题解决方案) using System; using System.Collections.Generic; using System.Web; u ...

  9. MVC基础知识 – 1.抽象工厂模式

    1.调用规则 2.简单工厂 问题:在List.aspx里怎么new一个业务层? 2.1.再在 02SBLL 解决方案里建一个类库 BLL_Tow,也有一个 Users.cs 2.2.建立一个工厂 2. ...

  10. 17.观察者模式(Observer Pattern)

    using System; using System.Collections.Generic; namespace ConsoleApplication10 { /// <summary> ...