- //1.在private部分加入下列代码:
- procedure wmnchittest(var msg: twmnchittest);message wm_nchittest;
- //在程序部分加入以下代码:
- procedure TForm1.wmnchittest(var msg: twmnchittest);
- begin
- inherited;
- if (htclient = msg.result) then msg.result := htcaption;
- end;
- //2.在你的窗体开始的地方加入:
- procedure wmnchittest(var msg: twmnchittest); message wm_nchittest;
- //然后加入以下过程:
- procedure TForm1.wmnchittest(var msg: twmnchittest);
- begin
- if GetAsyncKeyState(VK_LButton) < 0 then
- msg.result := htcaption
- else
- msg.result := htclient;
- end;
- //3.控件拖动窗体
- procedure Panel.MouseMove;
- begin
- if FDown then begin
- Form.Left := Form.Left + X - FOldX;
- Form.Top := Form.Top + Y - FOldY;
- end;
- end;
- procedure Panel.MouseUp;
- begin
- FDown := False;
- end;
- procedure Panel.MouseDown;
- begin
- if (Button = mbleft) and not FDown then FDown := True;
- FOldX := X;
- FOldY := Y;
- end;
- //4.OnMouseDown的事件里加:(Label为例,其他的一个样)
- procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- const
- sc_dragmove = $F012;
- begin
- ReleaseCapture;
- twincontrol(application.mainform).Perform(WM_SYSCOMMAND, sc_dragmove, 0);
- end;
- //5.
- procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton; Shift:
- TShiftState; X, Y: Integer);
- begin
- ReleaseCapture;
- Perform(WM_SYSCOMMAND, $F012, 0);
- end;
- //6.
- procedure TfrmBlank.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- begin
- if (ssLeft in Shift) then begin
- ReleaseCapture;
- SendMessage(Self.Handle, WM_SYSCOMMAND, SC_MOVE + 1, 0);
- end;
- end;
拖动无标题栏的窗口
最新推荐文章于 2022-11-26 11:00:29 发布