2013-12-17 12 views
8

如果我將一個TXMLDocument添加到IDE的表單中,則會自動添加單元Xml.XMLDoc, Xml.xmldom, Xml.XMLIntf, Xml.Win.msxmldom(保存/編譯時),IDE如何知道添加這些單元。我明白爲什麼/如何XMLDoc被添加(它包含TXMLDocument),但其他人怎麼樣。將組件添加到表單時,Delphi單元是如何自動添加的?

此外,如果我將DOMVendor從MSXML更改爲ADOM XML v4,則會自動添加Xml.adomxmldom(在下一次編譯時)。在這一點上,我可以刪除Xml.Win.msxmldom而不會自動添加它。 IDE如何基於組件屬性知道這一點?

我有兩個原因提出這個問題,首先好奇,但其次我正在清理大量單位(數百)的使用部分。該項目使用DevExpress,並增加了一些額外的文件的用途 - 例如添加一個TcxSpinEdit然後cxSpinEdit, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxContainer, cxEdit, cxTextEdit, cxMaskEdit被添加。我希望儘量減少控件從表單中刪除的使用條款(但它們的單位保留在使用中),因此需要了解更好地添加它們的過程。

+0

IDE還節省填充模塊之前使用條款。 –

+1

這是一個有點偏離主題,但CNPack提供了一個很好的使用子句清理器... –

+0

@HughJones是的,這是我正在使用的,雖然它無法正確清理我的許多單位的使用(刪除/留下額外的字符),但適用於檢測。此外,伊卡洛斯還指出了何時可以將單元從接口移動到實現。 – Alister

回答

13

組件可以安排他們在設計師的存在強制特定的單位被添加到單位的使用條款。他們通過撥打RegisterSelectionEditor來註冊他們的TSelectionEditor子類。這些子類覆蓋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; 
相關問題