2013-03-04 9 views
6

मैं एक कस्टम घटक संपादक लिख रहा हूं, अनिवार्य रूप से TActionList संपादक के समान है जिसमें यह उप घटकों के निर्माण की अनुमति देता है। संपादक में घटकों को जोड़ने/हटाने के लिए बटन हैं।डेल्फी डिजाइनर, घटक विरासत में मिला है?

अब, मैं यह जानना चाहता हूं कि चयनित घटक विरासत में है या नहीं, ताकि मैं हटाएं बटन को अक्षम कर सकूं। मुझे IDesigner या संबंधित इंटरफेस में ऐसा कोई सदस्य नहीं मिला है।

मैं बस आगे बढ़ो और Designer.DeleteSelection(True); से हटा देते हैं तो मैं एक अपवाद प्राप्त करें:

चयन होता है एक घटक, xxx, एक पूर्वज में शुरू की है और हटाया नहीं जा सकता।

जो बहुत बुरा नहीं है, लेकिन मैं पहले स्थान पर डिलीट बटन को अक्षम करना चाहता हूं।

+0

जब आप उन्हें अपनी सूची दृश्य (?) में चुनते हैं तो आप अपने आइटम की सूची तक पहुंच सकते हैं और प्रत्येक आइटम के लिए पूछ सकते हैं कि 'एक निश्चित कक्षा' से 'इनहेरिट्स' से। – TLama

+1

@TLama नहीं, यह नहीं है। डैनियल दृश्य विरासत के बारे में बात कर रहा है, जैसा कि .dfm फ़ाइलों में विरासत वाले कीवर्ड द्वारा इंगित किया गया है। –

+0

अगर यह संभव था तो मुझे आश्चर्य होगा। स्टॉक 'TActionList' के साथ आप जो वर्णन करते हैं उसे करने का प्रयास करें। त्रुटि संदेश है: 'घटक एक्शन 1 का नाम नहीं बदला जा सकता है, घटक को पूर्वजों के रूप में पेश किया गया था। '। लेकिन फिर कार्रवाई पर क्लिक करें और यह वैसे भी गायब हो जाता है और एक और त्रुटि संदेश है: * सीमा से बाहर तर्क *। तो, आईडीई इसे सही नहीं मिल सकता है! –

उत्तर

8

ठीक है, तो जाहिरा तौर पर वहाँ एक रास्ता, csAncestor के लिए TComponent.ComponentState जाँच, इसलिए कर रहा है: ComponentState

में

csAncestor और यह documented है:

csAncestor - घटक को पूर्वजों के रूप में पेश किया गया था। केवल तभी सेट करें जब सीएस डिज़ाइनिंग भी सेट हो।

+2

बहुत अच्छा। बहुत बढ़िया। शायद किसी को एम्बरकेडेरो को इसके बारे में बताना चाहिए ताकि वे अपनी एक्शन लिस्ट एडिटर को ठीक कर सकें !! –

+0

+1 अच्छी नौकरी .... – bummi

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