2016-12-09 6 views
5

मैं नीचे दिए गए कोड है:MessageDlg नहीं है ध्वनि

IF MessageDlg('Delete?',mtConfirmation,[mbYes,mbNo],0) = MrYes THEN 
Begin 
///Do Something; 
End 
Else 
Begin 
///Do Something; 
End; 

MessageDlg समारोह ध्वनि बजाते हैं StyleWindows है, लेकिन अगर मैं उदाहरण के लिए Windows 10 करने के लिए Style बदलने के लिए, तो ध्वनि काम नहीं करता है ।

  • जब मैं Style चुनता हूं तो ध्वनि मौजूद नहीं होती है?

  • मैं इसे कैसे ठीक कर सकता हूं?

नोट: मैं पर डेल्फी 10 सिएटल काम कर रहा हूँ।

अद्यतन:

मैं कोशिश MessageBeep(MB_ICONQUESTION);David Heffernan के रूप में अपने जवाब में सुझाव देते हैं, लेकिन यह भी एक ध्वनि उत्सर्जन नहीं करेगा।

उत्तर

3

अपने विंडोज संस्करण के आधार पर डेविड जवाब की मदद के लिए, मौजूदा सक्रिय शैली और दूसरों की जाँच करता है 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; 
4

जब आप Windows शैली का उपयोग करते हैं, तो संदेश संवाद Windows संदेश संवाद कार्यों में से एक द्वारा कार्यान्वित किया जाता है। ये मानक सिस्टम ध्वनियों को छोड़ देंगे जो संवाद के प्रकार से मेल खाते हैं।

जब आप वीसीएल शैलियों का उपयोग करते हैं, तो वीसीएल कोड संवाद के लिए ज़िम्मेदार होता है। और यह सिस्टम ध्वनियों को उत्सर्जित करने का विकल्प नहीं चुनता है। यह वीसीएल शैलियों के साथ असुरक्षित रूप से लागू कई विवरणों में से एक है। यदि आप वीसीएल शैलियों का उपयोग करते समय मानक व्यवहार को दोहराना चाहते हैं, तो आपको MessageBeep पर उचित कॉल जोड़ना होगा।

+0

'MessageBeep (MB_ICONQUESTION);' स्टैंडर्ड प्रणाली ध्वनि – Sami

+0

उत्सर्जन नहीं है कि मैं 'उपयोग कर रहा हूँ विंडोज 7' और यह मेरे लिए काम नहीं कर रहा,' MessageBeep (MB_ICONWARNING); 'ध्वनि फेंकना, लेकिन' MessageBeep (MB_ICONQUESTION); ' – Sami

+2

एआरएम, सुनिश्चित नहीं है कि अब आपको कौन सा मूल्य गुजरना चाहिए। मुझे लगता है कि आपको अपनी आवाज़ों के साथ खेलना चाहिए और उन्हें सेट अप करना चाहिए ताकि आप उसके बीच अंतर कर सकें। देखें कि वीसीएल शैलियों बंद होने पर क्या ध्वनि उत्सर्जित होती है, फिर उस ध्वनि को प्रतिलिपि करने वाले मान को पास करें। वैसे भी, मुझे यकीन है कि आप इसे यहां से ले जा सकते हैं। –

संबंधित मुद्दे