Move form without border style

后端 未结 2 1670

how do I move a borderless form? I tried looking on the internet, but nothing. Thanks a lot.

相关标签:
2条回答
  • 2020-12-24 09:42

    If you mean dragging the window by the mouse, you can override WM_NCHITTEST message handling and return HTCAPTION for the drag region. The below will drag the window within the upper 30 pixels for insance:

    type
      TForm1 = class(TForm)
      private
      protected
        procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
      end;
    
    ..
    
    procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
    var
      Pt: TPoint;
    begin
      Pt := ScreenToClient(SmallPointToPoint(Message.Pos));
      if Pt.Y < 30 then
        Message.Result := HTCAPTION
      else
        inherited;
    end;
    
    0 讨论(0)
  • 2020-12-24 09:53

    You can drag a form using any contained control, including itself.

    Using the following example, you can move a form by clicking on its canvas and dragging. You could do the same with a panel on the form by putting the same code in the panel's MouseDown event, which would let you create your own pseudo caption bar.

    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    const
      SC_DRAGMOVE = $F012;
    begin
      if Button = mbLeft then
      begin
        ReleaseCapture;
        Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
      end;
    end;
    
    0 讨论(0)
提交回复
热议问题