がありません。MessageDlgは、私は以下のコードを持っている音
Style
を選択したときに音がないのはなぜですか?どうすれば修正できますか?
注:私はデルファイ10シアトルに取り組んでいます。
更新:
は、私は彼の答えに示唆MessageBeep(MB_ICONQUESTION);
David Heffernanと試みるが、それはまた音を発していません。
がありません。MessageDlgは、私は以下のコードを持っている音
Style
を選択したときに音がないのはなぜですか?
どうすれば修正できますか?
注:私はデルファイ10シアトルに取り組んでいます。
更新:
は、私は彼の答えに示唆MessageBeep(MB_ICONQUESTION);
David Heffernanと試みるが、それはまた音を発していません。
あなたのWindowsバージョンに依存し、デビッドの答えを補完するために、現在アクティブなスタイルと他の人がMessageDlg機能はカスタムTFormはを使用するか、これがラッパーである(TTaskDialogクラスを使用して実装されているチェックWindows Task Dialogの場合)。回避策として、TTaskDialogクラスを直接使用して、Vcl.Styles.Hooksユニットをプロジェクトに追加して、そのような種類のダイアログをスタイルすることができます。
uses
Vcl.Styles.Hooks;
procedure TForm56.Button1Click(Sender: TObject);
var
LTaskDialog : TTaskDialog;
begin
LTaskDialog := TTaskDialog.Create(Self);
try
LTaskDialog.Caption := 'Confirm';
LTaskDialog.Text := 'Delete ?';
LTaskDialog.CommonButtons := [tcbYes, tcbNo];
LTaskDialog.MainIcon := tdiInformation;
if LTaskDialog.Execute then
if LTaskDialog.ModalResult = mrYes then
begin
end;
finally
LTaskDialog.Free;
end;
Windowsスタイルを使用すると、メッセージダイアログは、Windowsのメッセージダイアログ機能の1つによって実装されます。これらは、ダイアログのタイプに一致する標準のシステムサウンドを出力します。
VCLスタイルを使用すると、VCLコードによってダイアログが表示されます。そして、システム音を出さないことを選択します。これは、VCLスタイルでは不正確に実装される多くの詳細のほんの1つです。 VCLスタイルを使用しているときに標準動作を複製する場合は、MessageBeep
への適切な呼び出しを追加する必要があります。
'のMessageBeep(MB_ICONQUESTION);'音を発するが、 'のMessageBeep(;'私は 'のWindows 7'を使用して、私のために働いていないことを、'のMessageBeep(MB_ICONWARNING)だ標準システムサウンド – Sami
を排出しませんMB_ICONQUESTION);いいえ – Sami
Erm、あなたはどの値を渡すべきかわからない。私はあなたがあなたの音で遊ぶべきであり、あなたがそれを区別できるようにそれらを設定するべきだと思います。 VCLスタイルがオフのときにどのサウンドが放出されているかを確認し、そのサウンドを複製する値を渡します。とにかく、ここからそれを取ることができると確信しています。 –