Inno设置 - 在消息框中隐藏X按钮(关闭)

时间:2017-01-05 12:12:20

标签: inno-setup

如何在消息框中隐藏X按钮?

enter image description here

我希望看到这个,如果可能的话:

enter image description here

1 个答案:

答案 0 :(得分:2)

我认为这不可能。

一种可能的解决方法是从头开始实现消息框。

biSystemMenu移除TForm.BorderIcons(或实际将其设为空)。

procedure MyMessageBoxWithoutCloseButton;
var
  Form: TSetupForm;
  Button: TNewButton;
  MesssageLabel: TLabel;
begin
  Form := CreateCustomForm;
  Form.BorderStyle := bsDialog;
  Form.Position := poOwnerFormCenter;
  Form.ClientWidth := ScaleX(400);
  Form.ClientHeight := ScaleY(130);
  Form.BorderIcons := []; { No close button }
  Form.Caption := 'Caption';

  MesssageLabel := TLabel.Create(Form);
  MesssageLabel.Parent := Form;
  MesssageLabel.Left := ScaleX(16);
  MesssageLabel.Top := ScaleX(16);
  MesssageLabel.Width := Form.ClientWidth - 2*ScaleX(16);
  MesssageLabel.Height := ScaleY(32);
  MesssageLabel.AutoSize := False;
  MesssageLabel.WordWrap := True;
  MesssageLabel.Caption := 'Lorem ipsum dolor sit amet, ...';

  Button := TNewButton.Create(Form);
  Button.Parent := Form;
  Button.Width := ScaleX(80);
  Button.Height := ScaleY(24);
  Button.Left := Form.ClientWidth - Button.Width - ScaleX(8);
  Button.Top := Form.ClientHeight - Button.Height - ScaleY(8);
  Button.Caption := 'Accept';
  Button.ModalResult := mrOK;

  Form.ShowModal;
end;

No close button

请注意,仍然可以使用 Alt-F4 关闭消息框。

防止该句柄OnCloseQuery。有关示例,请参阅How to Delete / Hide / Disable [OK] button on message box