Delphi OpenTools API - 编辑项目需要子句

     2023-02-16     156

关键词:

【中文标题】Delphi OpenTools API - 编辑项目需要子句【英文标题】:Delphi OpenTools API - Editing the project requires clause 【发布时间】:2016-03-10 13:41:51 【问题描述】:

我编写了一个 OpenTools 向导,用于为自定义项目类型创建骨架。它确实有效,并且项目和单元已正确创建。但是,如何编辑 .dpk 或 .dpk 文件的 requires 子句?

ModuleServices.CreateModule(MyIOTAProjectCreatorInterface) 的调用只给我 .dproj 文件。

【问题讨论】:

【参考方案1】:

在我的VCL Component Installer(由于 XE,这是 Delphi IDE 的一部分),我这样做:

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 部分。我花了一段时间才发现。

【讨论】:

完美,非常有帮助,谢谢 Rudy。

Delphi OpenTools API 获取组件属性

】DelphiOpenToolsAPI获取组件属性【英文标题】:DelphiOpenToolsAPIgetcomponentproperty【发布时间】:2017-01-2912:28:18【问题描述】:我正在实现一个包以在delphiIDE中转换和自动生成组件。我知道GExperts具有类似的功能,但我需要自定义一些... 查看详情

Delphi OpenTools API:如何获取目标 exe 名称?

】DelphiOpenToolsAPI:如何获取目标exe名称?【英文标题】:DelphiOpenToolsAPI:Howtogettargetexename?【发布时间】:2011-11-0120:20:58【问题描述】:如果给定IOTAProject,我如何获取目标可执行文件的名称?来自GExpert\'sOpenToolsAPIFAQ:如何确定二... 查看详情

Delphi 是不是有允许路径编辑的编辑控件?

】Delphi是不是有允许路径编辑的编辑控件?【英文标题】:IsthereaneditcontrolforDelphithatallowspathediting?Delphi是否有允许路径编辑的编辑控件?【发布时间】:2011-09-0609:20:15【问题描述】:我有各种层次结构,并希望允许使用如下浏览... 查看详情

从 C++ DLL 编辑 Delphi 记录

】从C++DLL编辑Delphi记录【英文标题】:EditDelphirecordfromC++DLL【发布时间】:2017-12-0602:25:12【问题描述】:我正在尝试使用从Delphi5程序调用的VisualC++创建一个DLL。Delphi程序传入一条记录,然后在DLL中对其进行编辑,Delphi程序使用该... 查看详情

在 Delphi 中编辑 PDF 文档

】在Delphi中编辑PDF文档【英文标题】:EditPDFdocumentsinDelphi【发布时间】:2012-08-0503:40:25【问题描述】:我们需要添加在Delphi应用程序中编辑PDF文档的功能。即给定一个PDF文档,打开它并生成一个带有编辑框的表单,用户可以使用... 查看详情

求delphi好用的html代码编辑控件?最好delphi2010能用,样子如图所示!

求Delphi好用的html代码编辑控件?最好Delphi2010能用,样子如图所示!如题所示!是显示网页还是类似XML代码编辑,如果是后者,推荐使用SkyEdit参考技术AWebBrowser控件可以 查看详情

delphi属性编辑器

RegisterPropertyEditorTPictureEditor=class(TClassProperty) RegisterPropertyEditor(TypeInfo(TPicture),nil,‘‘,TPictureEditor);RegisterPropertyEditor(TypeInfo(TBitmap),nil,‘‘,TPictureEditor) 查看详情

独立的 DBExpress 连接编辑器 (Delphi 2009)

】独立的DBExpress连接编辑器(Delphi2009)【英文标题】:StandaloneDBExpressconnectioneditor(Delphi2009)【发布时间】:2009-07-2216:22:27【问题描述】:是否有用于DBExpress连接的免费独立编辑器(Delphi2009),可以安装在客户PC上并用于管理DBExpress连... 查看详情

CBuilder/Delphi 的 HTML 编辑器

】CBuilder/Delphi的HTML编辑器【英文标题】:HTMLEditorforCBuilder/Delphi【发布时间】:2010-09-2823:35:28【问题描述】:我需要为C++Builder5找到基本的WYSIWYGHTML编辑器组件,让用户创建一些我将粘贴到现有HTML页面模板中的简单文本。只是对... 查看详情

Delphi IDE 编辑器不再显示提示

】DelphiIDE编辑器不再显示提示【英文标题】:DelphiIDEEditordoesn\'tshowhintsanymore【发布时间】:2011-01-0221:15:23【问题描述】:我的Delphi2009今天停止在编辑器窗口中显示提示。当我将鼠标悬停在任何标识符上时,什么都没有发生。仍... 查看详情

如何从 Delphi 代码动态编辑 pdf 中的字段?

】如何从Delphi代码动态编辑pdf中的字段?【英文标题】:HowcanIeditfieldsinpdfdynamicallyfromDelphicode?【发布时间】:2012-01-1009:20:17【问题描述】:我必须从Delphi代码动态更新pdf中的字段。是否可以从pdf文件中的复选框对文本框进行分类... 查看详情

在 delphi 上针对 API 28

】在delphi上针对API28【英文标题】:TargetingAPI28ondelphi【发布时间】:2020-01-0519:40:50【问题描述】:我在尝试将我的APK发布到GooglePlay商店时遇到问题。它说我必须将我的API级别更新为28。该应用程序使用地图服务,因此它必须具有... 查看详情

delphi之编辑框控件(tedit)(代码片段)

 TEdit组件主要用于数据的输入和显示和编辑等操作。AutoSelect  获取组件焦点。该属性只能在单行文本组件使用。值为True为选中。false则不选中。BorderStyle  设置编辑框控件的外观效果。当值为bsSingle,为一个单线边框。... 查看详情

delphi中如何判断当前光标的位置

Delphi中如何判断当前光标的位置,既处在哪个编辑筐中参考技术A如果只是要判断在那个编辑框中,编辑框本身就有事件的,你把所有的编辑框onfocus事件指向同一个,返回编辑框名就可以判断了。本回答被提问者采纳 查看详情

delphi7代码编辑器字体设置问题

...ierNew,我想改成微软雅黑Monaco,字体已经安装好了,但是DELPHI的代码编辑器设置选项里找不到这个字体,修改注册表的方法也不行,即使把相应的注册表项改为微软雅黑Monaco显示的还是CourierNew求高人赐教啊~~~1L:我说的是DELPHI7... 查看详情

为 Delphi 制作可编辑的设计时组件

】为Delphi制作可编辑的设计时组件【英文标题】:MakinganeditabledesigntimecomponentforDelphi【发布时间】:2012-01-2415:04:11【问题描述】:我一直在整个互联网上寻找答案,但我找不到。我想做的是创建一个组件,我在设计时可以添加组... 查看详情

如何用delphi得到指定窗口的坐标

我想用Delphi得到指定窗口的坐标,只要我输入窗口的标题,没有分了,希望高手可怜一下我,发个源码,十分感激!!GetClientRect[编辑本段]函数功能该函数获取窗口客户区的坐标。客户区坐标指定客户区的左上角和右下角。由于客户区坐... 查看详情

Delphi的Dropbox api? [关闭]

】Delphi的Dropboxapi?[关闭]【英文标题】:DropboxapiforDelphi?[closed]【发布时间】:2011-03-0205:00:15【问题描述】:我正在考虑使用DropBox将用户数据与delphi应用程序同步。它似乎解决了很多关于安全、权限等的问题......我看到有一些用... 查看详情