我希望您能帮忙翻译一下关于 IT 技术的内容。需要翻译的内容是:在 DX Berlin 中使用 VCL 样式禁用 [X] 关闭按钮。
为什么这段代码在使用 VCL 样式时不起作用呢?
EnableMenuItem(GetSystemMenu(Form3.Handle, LongBool(False)),SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
我希望您能帮忙翻译一下关于 IT 技术的内容。需要翻译的内容是:在 DX Berlin 中使用 VCL 样式禁用 [X] 关闭按钮。
为什么这段代码在使用 VCL 样式时不起作用呢?
EnableMenuItem(GetSystemMenu(Form3.Handle, LongBool(False)),SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
FormClose
事件中将操作设置为caNone
,尝试关闭窗体(点击红叉)时将不会发生任何事情。通过这种方式,您可以禁用按钮。procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//You cannot type only caNone, otherwise you'll get a compiler error
Action := TCloseAction.caNone;
end;
您可以在System.UITypes
中找到caNone;阅读文档以获取更多信息。
AllowToClose
,并将表单的 OnClose
事件改为 if not AllowToClose then Action := TCloseAction.caNone;
然后,当你想要通过程序关闭表单时,只需将 AllowToClose := True;
设置为真,并调用 Form.Close
。 - Tom BrunbergStyleElements
属性更改为[seFont, seClient]
,这意味着样式仅适用于所使用的字体和窗体的客户区域,但窗体的边框区域将不受样式影响,并由操作系统渲染。
2. 您可以在运行时修改样式,以达到所需的效果。不幸的是,我没有足够的样式经验,无法为您提供如何实现此目的的示例。
SC_CLOSE
并不会禁用Alt - F4
,即使在非样式化的应用程序中也是如此。 - Tom BrunbergALT-F4
的行为符合预期。除非我误解了你的意思。 - Jerry Dodge