我编写了一个OpenTools向导,用于为自定义项目类型创建框架。它确实工作,并且项目和单元被正确地创建。但是,如何编辑.dpk或.dpk文件的requires子句?
对ModuleServices.CreateModule(MyIOTAProjectCreatorInterface)的调用只给我.dproj文件。
发布于 2016-03-11 00:32:20
在我的VCL组件安装程序中(因为XE,这是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部分。我花了一段时间才发现。
https://stackoverflow.com/questions/35918198
复制相似问题