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

private  //窗体移动;
OldPos,NewPos:TPoint;
bMove:Boolean;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bMove:=True;
OldPos:=ClientToScreen(Point(X,Y));
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not bMove then Exit;
NewPos:=ClientToScreen(Point(X,Y));
Left:=Left+NewPos.X-OldPos.X;
Top:=Top+NewPos.Y-OldPos.Y;
OldPos:=NewPos;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
bMove:=False;
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;

控件移动

时间: 2024-09-30 07:14:18

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

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

1 /// <summary> 2 /// 重写OnControlAdded方法,为每个子控件添加MouseLeave事件 3 /// </summary> 4 /// <param name="e"></param> 5 protected override void OnControlAdded(ControlEventArgs e) 6 { 7 Control control = e.Control; // 获取添加的子控件 8 c

显示鼠标单击控件次数

#include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE hInst; /* The 'main' function of Win32 GUI programs: this is where execution starts */ int WINAPI WinMain(     HINSTANCE hInstance,     HINSTANCE hPrevInstance,    

C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件

一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序 2.效果图: 如下图所示,多窗体嵌套,其中一个是父窗体,其条是子窗体. 横向排列下面的窗体: 纵向排列下面的窗体: 关闭全部子窗

c# asp.net 鼠标改变控件坐标位置,更改控件坐标,注册表保存读取,打印,查找局域网内打印机等等收集

界面虽然被我弄的很难看,但功能还可以 里边注册表的路径自己设置一下,或者加一个创建注册表的语句,不然会报错 前台: Html代码   <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="FPSZ.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML

如何控制其他程序窗体上的窗口控件

用我的方法来控制其他程序窗体上的窗口控件,必须先了解什么是回调函数.我的理解是这样的:回调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等等之类的.但是什么时候被调用却不知道了.回调函数一般是按照调用者的要求定义好参数和返回值的类型,你向调用者提供你的回调函数的入口地址,然后调用者有什么事件发生的时候就可以随时按照你提供的地址调用这个函数通知你,并按照预先规定好的形式传递参数.所以很多人打比方,说回调函数还真有点像您随身带的BP机:告诉别人

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

//设置鼠标在控件上面时,改变光标形状 private void pictureBox_macroLogo_MouseHover(object sender, System.EventArgs e) { this.Cursor = Cursors.Hand; } private void pictureBox_macroLogo_MouseLeave(object sender, System.EventArgs e) { this.Cursor = Cursors.Default; }

C#实现窗体拖动时各个控件同比自动放缩大小

实现方式主要是利用panel控件为主题,对于每个控件的大小位置和字体这几个属性进行记录, 然后根据窗体改变的大小同时放缩. 简要步骤如下: 1 创建C#窗体程序项目. 2  Panel放置到窗体. 3  设置属性dock为fill. 4  注意MinnumSize不能设置为0, 改成大于0都行. public partial class FrmDemo : Form { double dFrmWidth; double dFrmHeight; double dZoomHorizon; doubl

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

窗体加载和控件加载不同步导致的控件闪烁现象:// 代码块加在父窗体中的任意位置,解决窗体加载和控件加载不同步导致的控件闪烁问题        protected override CreateParams CreateParams        {            get            {                CreateParams cp = base.CreateParams;                cp.ExStyle |= 0x02000000;     

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

在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件.例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开.在这个过程中,控件1只会触发MouseDown事件,而控件2则只会触发MouseUp事件,鼠标不在控件上他们就收不到对应的鼠标事件.同样的如果某个控件注册了MouseMove事件,当鼠标移动到控件外之后,控件将不会接收到MouseMove事件.但是在很多情况下我们需要在鼠标移动到控件外之后还能接收鼠标事件.例如按住