鸿 网 互 联 www.68idc.cn

delphi 鼠标拖动控件自由移动位置

来源:互联网 作者:佚名 时间:2021-12-14 17:54
方法: unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;typeTForm1=class(TForm)Button1:TButton;procedureButton1MouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Int

方法:

unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls; type  TForm1 = class(TForm)    Button1: TButton;    procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;      Shift: TShiftState; X, Y: Integer);    procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,      Y: Integer);    procedure Button1MouseUp(Sender: TObject; Button: TMouseButton;      Shift: TShiftState; X, Y: Integer);  private    { Private declarations }  public    { Public declarations }  end; var  Form1: TForm1;  isMouseDown : boolean ; // 是否拖拽  posX,posY : Integer;    // 拖动开始时候的坐标 implementation {$R *.dfm} procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);begin  isMouseDown := True;                          // 开始拖动  posX := Mouse.CursorPos.X  - Button1.Left ;   // 记录开始的X坐标  posY := Mouse.CursorPos.Y  - Button1.Top  ;   // 记录开始的y坐标end; procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);begin  if isMouseDown  then                           // 鼠标是按下状态(可以拖)  begin    Button1.Left := Mouse.CursorPos.X - posX ;   // 设置新的X位置(Left)    Button1.Top := Mouse.CursorPos.Y - posY ;    // 设置新的Y位置(Top)  end;end; procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);begin  isMouseDown := False;                          // 拖动结束end; end.

 

来源:https://bbs.csdn.net/topics/391076577

网友评论
<