移动窗体没有边框样式

如何移动无边界表单? 我试过在网上看,但没有。 非常感谢。

Solutions Collecting From Web of "移动窗体没有边框样式"

您可以使用任何包含的控件(包括其自身)拖动窗体。

使用以下示例,可以通过单击画布并拖动来移动表单。 通过在面板的MouseDown事件中放置相同的代码,您可以对窗体上的面板执行相同的操作,这将允许您创建自己的伪标题栏。

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; 

如果您的意思是通过鼠标拖动窗口,则可以覆盖WM_NCHITTEST消息处理并返回拖动区域的HTCAPTION 。 下面的窗口将拖动窗口在30个像素的上方:

 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;