2017-01-05 14 views

答えて

2

私はこれが可能であるとは思いません。

考えられる回避策の1つは、メッセージボックスを最初から実装することです。

TForm.BorderIconsからbiSystemMenuを削除してください(または実際は空に設定してください)。

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

これは表示されますが、ただちに終了します。フォームを実行するために必要なものは、すでにその時点で初期化されていません。 'DeinitializeSetup'のメッセージボックスにXボタンを表示できないのはなぜですか?ポイントは何ですか? –

関連する問題