5

मैंने देखा है कि एक से अधिक आइटम चुनते समय ऑब्जेक्ट इंस्पेक्टर से कुछ गुण गायब हो जाते हैं।ऑब्जेक्ट इंस्पेक्टर से कुछ गुण क्यों छिपाए जाते हैं जब एक से अधिक आइटम चुने जाते हैं?

ऐसा क्यों होता है और घटक बनाते समय इस व्यवहार को कैसे नियंत्रित किया जाए?

उदाहरण:

एक फार्म के लिए 2 बटन (TButton) जोड़ें और उनमें से एक का चयन करें।

enter image description here

वस्तु इंस्पेक्टर में आप सभी TButton के प्रकाशित गुण देख सकते हैं (ध्यान दें वहाँ भी है कि Constraints संपत्ति)।

enter image description here

वर्तमान चयन में अन्य जोड़ें बटन (जबकि शिफ्ट दबाकर कुंजी पर क्लिक करें)।

enter image description here

आप देख सकते हैं, कुछ गुण वस्तु इंस्पेक्टर से छिपाया गया है (ध्यान दें कि Constraints कोई और अधिक दिखाई देता है)।

enter image description here

उत्तर

8

एक संपत्ति जब एक से अधिक ऑब्जेक्ट का चयन किया जाता संपत्ति संपादक कि प्रॉपर्टी के लिए कॉन्फ़िगर द्वारा नियंत्रित किया जाता प्रदर्शित किया जाता है या नहीं। संपत्ति संपादकों (TPropertyEditor से DesignEditors.pas) से GetAttributes विधि है जो संपादक पर लागू विशेषताओं का एक सेट देता है। यदि सेट में paMultiSelect शामिल है, तो संपत्ति प्रदर्शित की जाएगी।

यह देखते हुए कि संपत्ति के मूल्य के बजाय सिर्फ (TSizeConstraints) की तुलना में, बाधा मान के रूप में प्रदर्शित किया जाता है, मैं निष्कर्ष है कि यह है कि संपत्ति सामान्य TClassProperty संपादक का उपयोग नहीं कर रहा है। वह संपादक paMultiSelect सेट करता है, लेकिन आपकी तस्वीरों के आधार पर, TSizeConstraints पर संपत्ति संपादक नहीं है। यह शायद एक निरीक्षण था।

आप अपना खुद का संपत्ति संपादक पंजीकृत करने का प्रयास कर सकते हैं। वर्तमान में TSizeConstraints के लिए पंजीकृत संपत्ति संपादक ढूंढें (उदाहरण के लिए TSizeConstraints के लिए स्रोत कोड खोजकर) और, डिज़ाइन-टाइम पैकेज में, उस से निकली एक नई श्रेणी घोषित करें। आपको जिस मूल्य की आवश्यकता है उसे वापस करने के लिए GetAttributes ओवरराइड करें। अंत में, RegisterPropertyEditor पर कॉल करने के लिए कोड में कहीं और उदाहरणों का पालन करें।

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