delphidelphi-7delphi-2006toolsapiopentools

Adding a unit automatically to the project


I am working on a component in Delphi 7 and Delphi 2006, where I am using a unit which I need to add to the .dpr file of the project on which the component is dropped automatically. Like the way Eureka Log automatically adds the unit 'ExceptionLog' to the project file:

enter image description here

Can anyone tell me how to programmatically add a unit to the project file when I drop my component on any form in the project?


Solution

  • You most likely have to use the Open Tools API for that.

    Also it might require to write a TSelectionEditor for your component to trigger the adding of the unit (I would try the RequiresUnit method).

    While there is an easy way to just add a unit to the active project (code below) this just works for the active project which might not be the project the form belongs to you are adding the component to. Also it adds the unit at the end of the uses clause.

    uses
      ToolsAPI;
    
    var
      currentProject: IOTAProject;
    begin
      currentProject := GetActiveProject();
      currentProject.AddFile('MyUnit.pas', True);
    

    You can check the GExperts source code because it contains a class (TUsesManager) that can parse units and modify the uses clause.