拖动无标题栏的窗口

  1. //1.在private部分加入下列代码:
  2. procedure wmnchittest(var msg: twmnchittest);message wm_nchittest;
  3. //在程序部分加入以下代码:
  4. procedure TForm1.wmnchittest(var msg: twmnchittest);
  5. begin
  6.   inherited;
  7.   if (htclient = msg.result) then msg.result := htcaption;
  8. end;
  9. //2.在你的窗体开始的地方加入:
  10. procedure wmnchittest(var msg: twmnchittest); message wm_nchittest;
  11. //然后加入以下过程:
  12. procedure TForm1.wmnchittest(var msg: twmnchittest);
  13. begin
  14.   if GetAsyncKeyState(VK_LButton) < 0 then
  15.     msg.result := htcaption
  16.   else
  17.     msg.result := htclient;
  18. end;
  19. //3.控件拖动窗体
  20. procedure Panel.MouseMove;
  21. begin
  22.   if FDown then begin
  23.     Form.Left := Form.Left + X - FOldX;
  24.     Form.Top := Form.Top + Y - FOldY;
  25.   end;
  26. end;
  27. procedure Panel.MouseUp;
  28. begin
  29.   FDown := False;
  30. end;
  31. procedure Panel.MouseDown;
  32. begin
  33.   if (Button = mbleft) and not FDown then FDown := True;
  34.     FOldX := X;
  35.     FOldY := Y;
  36. end;
  37. //4.OnMouseDown的事件里加:(Label为例,其他的一个样)
  38. procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
  39.   Shift: TShiftState; X, Y: Integer);
  40. const
  41.   sc_dragmove = $F012;
  42. begin
  43.   ReleaseCapture;
  44.   twincontrol(application.mainform).Perform(WM_SYSCOMMAND, sc_dragmove, 0);
  45. end;
  46. //5.
  47. procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton; Shift:
  48.   TShiftState; X, Y: Integer);
  49. begin
  50.   ReleaseCapture;
  51.   Perform(WM_SYSCOMMAND, $F0120);
  52. end;
  53. //6.
  54. procedure TfrmBlank.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  55.     Y: Integer);
  56.   begin
  57.     if (ssLeft in Shift) then begin
  58.       ReleaseCapture;
  59.       SendMessage(Self.Handle, WM_SYSCOMMAND, SC_MOVE + 10);
  60.     end;
  61.   end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值