16,748
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, RzButton;
type
TForm1 = class(TForm)
RzShapeButton1: TRzShapeButton;
Button1: TButton;
procedure RzShapeButton1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure RzShapeButton1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
procedure RzShapeButton1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
isMouseDown : boolean ; // 是否拖拽
posX,posY : Integer; // 拖动开始时候的坐标
implementation
{$R *.dfm}
procedure TForm1.RzShapeButton1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
isMouseDown := True; // 开始拖动
posX := Mouse.CursorPos.X - RzShapeButton1.Left ; // 记录开始的X坐标
posY := Mouse.CursorPos.Y - RzShapeButton1.Top ; // 记录开始的y坐标
end;
procedure TForm1.RzShapeButton1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
if isMouseDown then // 鼠标是按下状态(可以拖)
begin
RzShapeButton1.Left := Mouse.CursorPos.X - posX ; // 设置新的X位置(Left)
RzShapeButton1.Top := Mouse.CursorPos.Y - posY ; // 设置新的Y位置(Top)
end;
end;
procedure TForm1.RzShapeButton1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
isMouseDown := False; // 拖动结束
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
end.
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.
btnx, btny : integer ;
procedure TForm2.btMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
flag_dragging :=True;
startpoint :=Point(x,y) ;
lastpoint :=Point(x,y) ;
btnx := TRzShapeButton (Sender).Left ;
btny := TRzShapeButton (Sender).Top;
end;
procedure TForm2.btMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
dx,dy:Integer ;
begin
if flag_dragging then
begin
dx:= x-lastpoint.X;
dy:=y-lastpoint.Y ;
lastpoint:=point(x,y);
TRzShapeButton (Sender).Left:= btnx + dX;
TRzShapeButton (Sender).top:= btny + dy;
end;
end;