2017-01-05 4 views

ответ

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.

+0

Ваше изменение не делало ничего более ясного. Что ты хочешь? –

+0

Просто замените 'MsgBox (CustomMessage ('passwordincorrect'), mbInformation, MB_OK);' с 'MyMessageBoxWithoutCloseButton;' –

+0

Он отображает, но немедленно закрывается. Вероятно, что-то, что нужно для запуска этой формы, уже деинициализировано. Почему вы не можете отобразить кнопку X в окне сообщения в 'DeinitializeSetup'? В чем смысл? –