如果我从IDE中向表单添加TXMLDocument
,则会自动添加单位Xml.XMLDoc, Xml.xmldom, Xml.XMLIntf, Xml.Win.msxmldom
(在保存/编译时),IDE如何知道添加这些单位。我理解为什么/如何添加XMLDoc
(它包含TXMLDocument
),但其他人呢。
此外,如果我将DOMVendor从MSXML更改为ADOM XML v4,则会自动添加Xml.adomxmldom
(在下一次编译时)。此时,我可以删除Xml.Win.msxmldom
,而不会自动添加回TcxSpinEdit
。 IDE如何根据组件属性知道这一点?
我有两个理由提出这个问题,首先是好奇心,但其次我正在清理大量单位(数百个)的使用部分。该项目使用DevExpress,并为使用添加了大量额外文件 - 例如添加cxSpinEdit, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxContainer, cxEdit, cxTextEdit, cxMaskEdit
然后添加{{1}}。我想最小化使用条款,其中控件已从表单中删除(但它们的单元仍在使用中),因此需要了解更好地添加它们的过程。
答案 0 :(得分:13)
组件可以安排他们在设计器中的存在强制将特定单元添加到单元的uses子句中。他们这样做是通过调用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;