Delphi表单,不带系统菜单,但带有关闭按钮
默认情况下,BorderStyle=bsSizeable的表单有一个系统菜单(左侧)和一个关闭按钮(右侧的“X”)。我想去掉系统菜单,保留关闭按钮 BorderIcons属性允许我删除系统菜单(通过biSystemmenu),但现在关闭按钮也消失了 有办法做到这一点吗 使用delphixeDelphi表单,不带系统菜单,但带有关闭按钮,delphi,Delphi,默认情况下,BorderStyle=bsSizeable的表单有一个系统菜单(左侧)和一个关闭按钮(右侧的“X”)。我想去掉系统菜单,保留关闭按钮 BorderIcons属性允许我删除系统菜单(通过biSystemmenu),但现在关闭按钮也消失了 有办法做到这一点吗 使用delphixe PS:就Windows而言,这应该是可能的:IE8的“InPrivate Filtering settings”窗口相当大,有一个关闭按钮,并且没有系统菜单。我认为没有办法做到这一点,而不依赖于自定义绘制非客
PS:就Windows而言,这应该是可能的:IE8的“InPrivate Filtering settings”窗口相当大,有一个关闭按钮,并且没有系统菜单。我认为没有办法做到这一点,而不依赖于自定义绘制非客户区,这在涉及玻璃时非常困难 考虑一下这种方法
procedure TMyForm.DeleteSystemMenu;
var
SystemMenu: HMenu;
begin
SystemMenu := GetSystemMenu(Handle, False);
DeleteMenu(SystemMenu, SC_CLOSE, MF_BYCOMMAND);
end;
是的,它成功地从系统菜单中删除了关闭项,但也导致关闭按钮被禁用。因此,似乎一个按钮离不开另一个按钮。
BorderStyle:=bsSizeToolWin
做您想做的事情,X按钮的外观略有不同 所说的“系统菜单”是指标题栏左侧的图标吗?或通过右键单击调用弹出菜单
如果是要删除的图标-请使用以下代码:
const
WM_ResetIcon = WM_APP - 1;
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
protected
procedure WMResetIcon(var Message: TMessage); message WM_ResetIcon;
end;
implementation
procedure TForm1.FormShow(Sender: TObject);
begin
PostMessage(Handle, WM_ResetIcon, 0, 0);
end;
procedure TForm1.WMResetIcon(var Message: TMessage);
const
ICON_SMALL = 0;
ICON_BIG = 1;
begin
DestroyIcon(SendMessage(Handle, WM_SETICON, ICON_BIG, 0));
DestroyIcon(SendMessage(Handle, WM_SETICON, ICON_SMALL, 0));
end;
奇怪的是,对于我来说,
BorderStyle=bsDialog
的默认设置没有系统菜单,不管在BorderIcons
中指定了什么<代码>双系统菜单需要在那里才能显示红色的X。你说得对,bsDialog确实按照我想要的方式工作。脸红;-)我已经更新了这个问题:我希望它也适用于bsSizeable。@Andreas-你是说自定义绘制按钮?我想你应该清楚:你想要摆脱的是图标,而不是菜单。右键单击标题栏始终显示菜单,无论左上角是否有图标。@Rob:是的,这是一种更好的说法,它似乎与所请求的相反。它显然保留了系统菜单(因为您正在修改它),但它禁用了按钮代码>它删除了“大小”菜单项,因此您无法调整窗体的大小。@Rob请再次阅读我的答案。我想说的是,如果你去掉了部分系统菜单,那么标题栏上的匹配功能也会被禁用。事实上,你对Q的评论似乎也提出了类似的观点。但Windows Media Center肯定不会自定义画框吗?但它是可调整大小的,在右边有最小化、最大化和关闭按钮,有一个正常的系统菜单,但不在最左边显示系统菜单图标。@Andreas公认的解决方案显示了如何执行您描述的操作。最初的问题是想摆脱系统菜单,我相信你不能这样做,并保持一个功能关闭按钮。正如Rob指出的那样,你可以去掉图标,保留系统菜单,它仍然显示在ALT+SPACE、标题栏右键单击等等上。这太不一样了,这种不必要的差异是不必要的。@AndreasRejbrand谁是这种不必要的差异的作者?微软想在“普通窗口”和“工具窗口”之间做出区别吗?@user1580348:正确。工具窗口有更小的边框,这是非常有意的:小的、浮动的、位于顶部的窗口不应该有巨大的边框。以下是Microsoft Word 1997中的一个示例:。Word和“关于”对话框的标题栏很厚,但Office助手和浮动绘图工具栏(即工具窗口)的标题栏较小。