Delphi - 在 VCL 样式中禁用 [x] 关闭按钮

Jun*_*ira 5 delphi

我想在 DX Berlin 中禁用带有 VCL 样式的 [X] 关闭按钮。

为什么这段代码不能与 VCL 风格一起工作?

EnableMenuItem(GetSystemMenu(Form3.Handle, LongBool(False)),SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
Run Code Online (Sandbox Code Playgroud)

Alb*_*ola 5

如果您将事件中的操作设置FormClosecaNone,当您尝试关闭表单(单击红叉)时,什么也不会发生。通过这种方式,您可以禁用该按钮。

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;
Run Code Online (Sandbox Code Playgroud)

System.UITypes您可以在;中找到 caNone 阅读文档以获取更多信息。

  • @JuniorOliveira 另外,不要忘记通知用户为什么他此时无法关闭应用程序。我个人讨厌应用程序不想关闭并且也不告诉我原因。是的,无论您作为开发人员是否愿意,我都会找到关闭该应用程序的方法(您始终可以从任务管理器强行终止应用程序)。因此,请务必告诉用户为什么他们必须等待才能关闭应用程序。 (2认同)