2013-12-17 1 views
8

IDE에서 양식에 TXMLDocument을 추가하면 단위 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이 추가됩니다. 컨트롤이 폼에서 삭제 된 uses 절을 최소화하고 싶습니다. 그러나 해당 컨트롤이 더 잘 추가되는 과정을 이해해야합니다.

+0

IDE는 웁니다 모듈을 저장하기 전에 절을 사용합니다. –

+1

이것은 조금 벗어난 주제이지만 CNPack은 좋은 Uses 절 클리너를 제공합니다 ... –

+0

@HughJones 그래, 내 단위의 많은 부분에서 올바르게 사용하지 못하더라도 내가 사용하고있는 것입니다. (여분의 문자를 제거하거나 남겨 둡니다.), 그러나 탐지를 위해 잘 작동합니다. 또한 이카루스 (Icarus)는 인터페이스에서 구현으로 유닛을 이동할 수있는 경우를 나타냅니다. – Alister

답변

13

구성 요소는 설계자가 특정 유닛을 유닛의 uses 절에 추가하도록 강요합니다. 그들은 RegisterSelectionEditorTSelectionEditor 하위 클래스를 등록하여 호출합니다. 이 하위 클래스는 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; 
관련 문제