procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin If Button=mbLeft Then Begin ReleaseCapture; PerForm(WM_SYSCOMMAND,$F012,0); End; end;
也可以这么做啊:..... type TForm2 = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Form2: TForm2; Y1x,Y1y:Integer; {$R *.dfm}procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Y1x:=x; Y1y:=y; end;procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then begin Form2.Left:=Form2.Left+x-Y1x; Form2.Top:=Form2.Top+y-Y1y; end; end; 思想是骗系统,让它以为我们点击的是标题栏! 呵呵!
在FORM的Private定义中作如下声明: procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;procedure TForm1.WMNCHitTest(var M: TWMNCHitTest); begin inherited; if M.Result = htClient then M.Result := htCaption;
Shift: TShiftState; X, Y: Integer);
begin
If Button=mbLeft Then
Begin
ReleaseCapture;
PerForm(WM_SYSCOMMAND,$F012,0);
End;
end;
type
TForm2 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Form2: TForm2;
Y1x,Y1y:Integer;
{$R *.dfm}procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Y1x:=x;
Y1y:=y;
end;procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then
begin
Form2.Left:=Form2.Left+x-Y1x;
Form2.Top:=Form2.Top+y-Y1y;
end;
end;
思想是骗系统,让它以为我们点击的是标题栏!
呵呵!
procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited;
if M.Result = htClient then
M.Result := htCaption;
end;