हे मेरे भगवान, एम्बरकेडेरो ने गलती की है।
मेरे कुछ परीक्षणों से पता चला है कि यदि चेक-बॉक्स प्रारंभ में अनचेक किया गया है, लेकिन उपयोगकर्ता द्वारा चेक किया गया है, तो tfVerificationFlagChecked
ध्वज सेट किया जाएगा। लेकिन अगर ध्वज सेट किया गया है, और उपयोगकर्ता बॉक्स को अनचेक करता है, तो tfVerificationFlagChecked
Flags
सेट से हटाया नहीं जाएगा। और यह अजीब नहीं है। VCL कोड करता
Result := TaskDialogIndirect(LTaskDialog, {$IFNDEF CLR}@{$ENDIF}LModalResult,
{$IFNDEF CLR}@{$ENDIF}LRadioButton, {$IFNDEF CLR}@{$ENDIF}LVerificationChecked) = S_OK;
FModalResult := LModalResult;
if Result then
begin
FButton := TTaskDialogButtonItem(FButtons.FindButton(FModalResult));
FRadioButton := TTaskDialogRadioButtonItem(FRadioButtons.FindButton(LRadioButton));
if LVerificationChecked then
Include(FFlags, tfVerificationFlagChecked);
end;
सूचना है कि झंडा यदि चेकबॉक्स चेक किया जाता है जब संवाद बंद है, लेकिन वहाँ झंडा दूर करने के लिए करता है, तो बॉक्स उपयोगकर्ता द्वारा चुना नहीं गया है कोई कोड है शामिल है।
बेशक, एक कोड के उत्तरार्द्ध
if LVerificationChecked then
Include(FFlags, tfVerificationFlagChecked)
else
Exclude(FFlags, tfVerificationFlagChecked)
पढ़ लिया है की उम्मीद करेंगे मुझे लगता है मैं OnVerificationClicked
मैनुअल टॉगल दृष्टिकोण के साथ जाना होगा।
स्रोत
2010-08-27 16:15:40
आधिकारिक दस्तावेज, वैसे, भयभीत है। उदाहरण के लिए इसे लें: http://docwiki.embarcadero.com/VCL/en/Dialogs.TCustomTaskDialog.URL वे यह भी समझाते नहीं हैं * यह * URL क्या है। यह स्पष्ट नहीं है कि प्रत्येक कार्य संवाद से जुड़ा एक यूआरएल है। और यहां (http://docwiki.embarcadero.com/VCL/en/Dialogs.TCustomTaskDialog.Execute) वे समझाने के लिए भूल जाते हैं कि फ़ंक्शन का क्या (बूलियन) परिणाम है! –
आपके पास स्रोत कोड है, है ना? देखें कि संवाद API फ़ंक्शन का उपयोग कहां किया जाता है। इसे TaskDialogIndirect कॉल करना चाहिए। चौथा पैरामीटर अंततः चेक बॉक्स का मान प्राप्त करेगा, तो कोड इसके साथ क्या करता है? –
@ रोब केनेडी: हां, विंडोज एपीआई बहुत अच्छी तरह से प्रलेखित है, इसलिए यह (हमेशा) एक अच्छा विचार है। मैं अब देख रहा हूं ... –