相关疑难解决方法(0)

创建无边框表单而不会丢失Windows命令

我已经将我的表单更改为无边框形式,我只是将BorderStyle属性更改为bsNone,但现在我的应用程序丢失了窗口锚点和一些命令,如

WIN +↑(对齐表格客户端)
WIN +↓(最小化表格)
WIN +→(右对齐表格)
WIN +←(左对齐表格)

我试过设置BorderStyle: bsSizeable并使用下面的代码FormCreate,但这不起作用:

procedure TfrmBase.FormCreate(Sender: TObject);
begin
  SetWindowLong(Handle
               ,GWL_STYLE
               ,GetWindowLong(Handle, GWL_STYLE)
                AND (NOT WS_CAPTION)
                AND (NOT WS_THICKFRAME)
               );


  Refresh;
  FormColor := oLauncher.oCor;
end;
Run Code Online (Sandbox Code Playgroud)

结果如下:

我的表格

上面的图像是我想要的,但我已经提到的Windows命令不起作用

有什么办法可以设置BorderStyle: bsNone并且不丢失这些命令吗?

EDITED

如果我使用WS_THICKFRAME我的表单返回一个小的顶部边框和Windows命令运行良好,但我不想要顶部边框.

我的表格2

编辑2

我非常接近预期的结果,但还有一点问题......

我把它放在我的身上 FormCreate

SetWindowLong(Handle
             ,GWL_STYLE
             ,GetWindowLong(Handle, GWL_STYLE)
              AND (NOT WS_CAPTION)
              );
Run Code Online (Sandbox Code Playgroud)

我创建了这个方法

private
   procedure WmNCCalcSize(var Msg: TWMNCCalcSize); message WM_NCCALCSIZE;
Run Code Online (Sandbox Code Playgroud)

然后

procedure TfrmBase.WmNCCalcSize(var Msg: TWMNCCalcSize);
begin
  inherited;
  if Msg.CalcValidRects then
  begin …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe rad-studio

5
推荐指数
1
解决办法
172
查看次数

标签 统计

delphi ×1

delphi-xe ×1

rad-studio ×1