2016-03-10 11 views
2

Я написал мастер OpenTools для создания скелета для пользовательского типа проекта. Он действительно работает, и проект и блоки созданы правильно. Но как мне отредактировать предложение .dpk или .dpk file?API Delphi OpenTools - Редактирование проекта требует предложения

Вызов ModuleServices.CreateModule(MyIOTAProjectCreatorInterface) дает мне только файл .dproj.

ответ

3

В моих VCL Component Installer (с Х, это является частью интегрированной среды разработки Delphi), я делаю это так:

procedure TCompInstallWizard.AddReferenceFiles(InstallProject: IOTAProject; 
    const FileNames: array of string); 
var 
    ReferenceFile: string; 
begin 
    WriteDebugMessage('AddReferenceFiles'); 
    for ReferenceFile in FileNames do 
    if not ContainsFile(InstallProject, ReferenceFile) then 
     InstallProject.AddFile(ReferenceFile, False); 
end; 

с помощью функции IOTAProject.AddFile(FileName, IsUnitOrForm). Обратите внимание, что я называю это так:

if FPersonality = ppCppBuilder then 
    AddReferenceFiles(InstallProject, 
    ['rtl.bpi', 'designide.bpi', 'vcl.bpi', 'vclactnband.bpi', 
    'vclx.bpi', 'xmlrtl.bpi']) 
else 
    AddReferenceFiles(InstallProject, 
    ['rtl.dcp', 'designide.dcp', 'vcl.dcp', 'vclactnband.dcp', 
    'vclx.dcp', 'xmlrtl.dcp']); 

Обратите внимание, что документы говорят:

{ Call this function to add an arbitrary file to the project. NOTE: some 
    files have special meaning to different projects. For example: adding 
    VCL60.DCP will cause a new entry in a package project's "requires" list 
    while it will be a raw file to any other project type. Set IsUnitOrForm 
    to true for files that are considered items that the project would 
    process directly or indirectly (ie. .pas, .cpp, .rc, etc..) or can be 
    opened in the code editor. For all others, including binary files 
    (.res, .bpi, .dcp, etc..) set this to False. } 
procedure AddFile(const AFileName: string; IsUnitOrForm: Boolean); 

Это означает, что если вы добавите 'bla.dcp' он будет автоматически приземляться в разделе requires, и если вы добавляете 'bla.pas' файл, он приземлится в разделе contains. Мне потребовалось некоторое время, чтобы узнать.

+0

Отлично, очень полезно, спасибо Руди. –