【问题标题】:Adding a unit automatically to the project将单元自动添加到项目中
【发布时间】:2012-05-04 19:26:51
【问题描述】:

我正在处理Delphi 7Delphi 2006 中的一个组件,我正在使用一个单元,我需要将它添加到项目的.dpr 文件中,该组件会自动在该文件中被删除。 就像 Eureka Log 自动将单元 'ExceptionLog' 添加到项目文件中的方式:

当我将组件放在项目中的任何表单上时,谁能告诉我如何以编程方式将单元添加到项目文件中?

【问题讨论】:

  • 我认为源单元在所有情况下都会自动添加。当然只有当它们被知道,当它们已经被包含在 Delphi 路径中时(结果是什么)。
  • @Tlama,组件单元自动添加到 formdata module 单元。它们不会自动添加到 项目。这是 Eureka Log 为自己做的特别的事情。
  • @Rob,这是我误读的下一个问题。我将不得不更加注意。谢谢!
  • @menjaraz 是的,当然..你知道怎么做吗?

标签: delphi delphi-7 delphi-2006 toolsapi opentools


【解决方案1】:

奇数。

我曾经将我的默认 dpr 设置为几乎不包含任何内容,结果我的工具箱非常空。因此,如果它在我的工具箱中,它在 dpr 中 - 你有什么问题 - 通常如果它在工具箱中,它已经在 dpr 中。

【讨论】:

  • 我的意思是,我的组件在dpr 中需要一个unit,我不能在user 上要求/中继把它放在那里..所以我需要自动化它跨度>
  • 如果没有我的 delphi 副本,你当然可以在你应该添加到 dpr 的单元中设置一个条件,如果它不存在,其他单元将被添加到 .pas文件 - 使用“请将单元 x 添加到 dpr 文件”引发编译错误 ..
【解决方案2】:

转到项目> Eurekalog 选项并禁用 Eurekalog。

【讨论】:

  • 我认为你没有得到我的问题,我的意思是像尤里卡日志将ExceptionLog 添加到dpr。如何做同样的事情
【解决方案3】:

您很可能必须为此使用 Open Tools API。

还可能需要为您的组件编写TSelectionEditor 以触发单元的添加(我会尝试 RequiresUnit 方法)。

虽然有一种简单的方法可以将一个单元添加到活动项目(下面的代码),但这仅适用于活动项目,它可能不是表单所属的项目,您正在向其中添加组件。它还在uses子句的末尾添加了单位。

uses
  ToolsAPI;

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

您可以检查GExperts source code,因为它包含一个可以解析单位和修改uses子句的类(TUsesManager)。

【讨论】:

  • 我希望AddFile 会添加一个类似uses MyUnit in 'MyUnit.pas' 的项目,这不适合库组件。组件应该只添加一个单元引用,而不是文件引用,如问题中的图片所示。
  • @Rob 照你说的做。这只是表明 OTA 可以做到这一点的一个例子。但是我没有找到合适的方法。这就是我提到 GExperts 来源的原因。
  • IsUnitOrForm参数不应该是True吗?
  • @NGLN 根据ToolsAPI中的源代码cmets是的
猜你喜欢
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
  • 2021-02-12
  • 2013-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多