Inno Setup - Hide X button (close) at message box

2019-04-02 22:44发布

How to hide X button at message box?

enter image description here

I want to see this, if is possible:

enter image description here

标签: inno-setup
1条回答
Summer. ? 凉城
2楼-- · 2019-04-02 23:30

I do not think this is possible.

One possible workaround is to implement the message box from the scratch.

And remove the biSystemMenu from the TForm.BorderIcons (or actually setting it empty).

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


Note that it's still possible to close the message box using Alt-F4.

To prevent that handle OnCloseQuery. For an example, see How to Delete / Hide / Disable [OK] button on message box.

查看更多
登录 后发表回答