移动没有边框样式的表单

Gia*_*rmo 9 forms windows delphi borderless

如何移动无边框表格?我试着在互联网上寻找,但没有.非常感谢.

Bru*_*Gee 19

您可以使用任何包含的控件(包括其自身)拖动表单.

使用以下示例,您可以通过单击其画布并拖动来移动表单.您可以通过在面板的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;
Run Code Online (Sandbox Code Playgroud)


Ser*_*yuz 13

如果您的意思是通过鼠标拖动窗口,则可以覆盖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;
Run Code Online (Sandbox Code Playgroud)