2013-12-17 6 views
8

यदि मैं आईडीई से किसी फॉर्म में TXMLDocument जोड़ता हूं, तो इकाइयां Xml.XMLDoc, Xml.xmldom, Xml.XMLIntf, Xml.Win.msxmldom स्वचालित रूप से जोड़े जाती हैं (सहेजने/संकलित पर), आईडीई इन इकाइयों को जोड़ने के बारे में कैसे जानती है। मैं समझता हूं कि क्यों/कैसे XMLDoc जोड़ा गया है (इसमें TXMLDocument शामिल है) लेकिन दूसरों के बारे में क्या है।किसी घटक में किसी घटक को जोड़े जाने पर डेल्फी इकाइयां स्वचालित रूप से कैसे जुड़ती हैं?

इसके अतिरिक्त यदि मैं एमओएक्सएमएल से एडीओएम एक्सएमएल v4, Xml.adomxmldom में स्वचालित रूप से जोड़ा गया है (अगले संकलन पर) को DOMVendor बदलता हूं। इस बिंदु पर मैं Xml.Win.msxmldom को स्वचालित रूप से वापस जोड़े बिना हटा सकता हूं। आईडीई को घटक संपत्ति के आधार पर यह कैसे पता चलता है?

मेरे पास इस सवाल को पूछने के दो कारण हैं, सबसे पहले जिज्ञासा, लेकिन दूसरी बात यह है कि मैं बड़ी संख्या में इकाइयों (सैकड़ों) के उपयोग खंड को साफ कर रहा हूं। प्रोजेक्ट DevExpress का उपयोग करता है, और यह उपयोग में अतिरिक्त फ़ाइलों के ढेर जोड़ता है - उदाहरण के लिए TcxSpinEdit जोड़ें तो cxSpinEdit, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxContainer, cxEdit, cxTextEdit, cxMaskEdit जोड़े गए हैं। मैं उपयोग खंड को कम करना चाहता हूं जहां नियंत्रणों से नियंत्रण हटा दिए गए हैं (लेकिन उनकी इकाइयां उपयोग में रहती हैं) और इस प्रकार प्रक्रिया को समझने की आवश्यकता है जिससे उन्हें बेहतर जोड़ा जा सके।

+0

आईडीई भी भरता मॉड्यूल सहेजने से पहले खंड का उपयोग करता है। –

+1

यह एक छोटा सा विषय है लेकिन सीएनपीएक्स एक अच्छा उपयोग क्लॉज क्लीनर प्रदान करता है ... –

+0

@ ह्यूज जोन्स यूप, मैं यही उपयोग कर रहा हूं, हालांकि यह मेरी कई इकाइयों में सही ढंग से उपयोग करने में विफल रहता है (अतिरिक्त वर्ण हटा देता है/छोड़ देता है), लेकिन पहचान के लिए अच्छी तरह से काम करता है। इसके अलावा Icarus, जो अन्य चीजों के साथ इंगित करता है कि जब आप इंटरफ़ेस से कार्यान्वयन के लिए एक इकाई को स्थानांतरित कर सकते हैं। – Alister

उत्तर

13

घटक व्यवस्थित कर सकते हैं कि डिजाइनर बलों में उनकी उपस्थिति इकाई इकाइयों के उपयोग खंड में जोड़े जाने के लिए विशिष्ट इकाइयों को जोड़ती है। वे अपने TSelectionEditor उप-वर्गों को पंजीकृत करने के लिए RegisterSelectionEditor पर कॉल करके ऐसा करते हैं। ये उप-वर्ग TSelectionEditor.RequiresUnits ओवरराइड करते हैं और वहां इकाइयों को निर्दिष्ट किया जाना चाहिए।

उदाहरण के लिए:

uses 
    DesignEditors; 
.... 
type 
    TMySelectionEditor = class(TSelectionEditor) 
    public 
    procedure RequiresUnits(Proc: TGetStrProc); override; 
    end; 

procedure TMySelectionEditor.RequiresUnits(Proc: TGetStrProc); 
begin 
    Proc('MyUnit'); 
end; 

procedure Register; 
begin 
    RegisterSelectionEditor(TMyComponent, TMySelectionEditor); 
end; 
संबंधित मुद्दे