Delphi表单没有系统菜单,但有关闭按钮

Gie*_*iel 6 delphi

默认情况下,具有BorderStyle = bsSizeable的表单具有系统菜单(在左侧)和关闭按钮(在右侧的"X").我想摆脱系统菜单并保持关闭按钮.

BorderIcons属性允许我删除系统菜单(通过biSystemmenu),但现在关闭按钮也消失了.

有没有办法做到这一点?

使用Delphi XE

PS:就Windows而言应该是可能的:IE8的"InPrivate过滤设置"窗口很大,有一个关闭按钮,没有系统菜单.

Dav*_*nan 0

我认为没有办法做到这一点而不诉诸自定义绘制非客户区域,这在涉及玻璃时非常困难。

考虑这个方法。

procedure TMyForm.DeleteSystemMenu;
var
  SystemMenu: HMenu;
begin
  SystemMenu := GetSystemMenu(Handle, False);
  DeleteMenu(SystemMenu, SC_CLOSE, MF_BYCOMMAND);
end;
Run Code Online (Sandbox Code Playgroud)

是的,它成功地从系统菜单中删除了关闭项目,但它也导致关闭按钮被禁用。如此看来,两者缺一不可。

  • 这似乎与所要求的“相反”。它显然保留了系统菜单(因为您正在修改它),但它禁用了该按钮。 (2认同)