问题标签 [opentools]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1478 浏览

delphi - Delphi-IDE:如何改变类完成的工作方式?

Delphi 中的类完成可以大大节省时间,但我还没有找到自定义它的方法。

  1. 我想要一个属性的getter和setter被组合在一起,而不是被扔到我的整个单元中;接口部分是正确生成的,但是如果你把事情留给 IDE,实现部分就会变得一团糟。我希望默认情况下像这样订购方法:

    函数 TAaa.getAaa();

    程序 TAaa.setAaa();

    程序 TAaa.Baa();

    函数 TAaa.getCow();

    程序 TAaa.setCow();

    程序 TBbb.getAaa()

  2. 我希望实现部分与接口的顺序相同;

  3. 我希望生成的方法的主体看起来像这样:

.

是否有工具可以做到这一点,或者是否需要深入到 opentools API 来完成类似的事情?


相关问题: Class Completion 将其结果按什么顺序排列?

0 投票
2 回答
1011 浏览

delphi - 如何使用 Open Tools API 检测 IDE 中的文件是否正在编辑

我使用访问 ClearCase 的 Open Tools API 制作了一个小型 IDE 插件。它有菜单项“签入”、“签出”等。它工作正常,但如果我开始在 IDE 编辑器中输入或尝试保存文件,我希望它自动签出只读文件。你认为这可能吗?

我尝试了一些东西,但最终放弃了。IOTAEditorServices.KeyboardServices 具有看起来很有希望的 AddKeyboardBinding 方法。使用它,我添加了一个绑定类型为 btPartial 的通知程序(后来尝试了 btComplete),插件开始检测一些快捷键按下,但不是所有的键盘事件,远非如此......任何想法将不胜感激!

0 投票
1 回答
518 浏览

delphi - Delphi 的 OTA:有没有办法在构建时获得主动配置(D2010)?

我可以要求 Delphi 一次构建所有配置 - 通过单击“构建配置”并调用“生成”命令:

建立所有的confs
(来源:free.fr

这将一个接一个地构建所有配置。

问题是我们有一个 IDE 专家,他必须对编译事件做出反应。我们注册 IOTAIDENotifier80 来挂钩事件。有 BeforeBuild 和 AfterBuild 事件——我们对这些很感兴趣。IOTAProject 被传递给每个事件。

问题是:活动配置永远不会改变。即,如果您选择了“调试”配置(以粗体显示) - 所有对 BeforeBuild/AfterBuild 事件的调用都将返回调试配置配置文件(即使 IDE 一个接一个地编译不同的配置文件)。我指的是 IOTAProject 的属性。

我也尝试使用 IOTAProjectOptionsConfigurations,但它的 ActiveConfiguration 属性总是返回相同的“粗体”配置文件,而不管当前编译的配置文件如何。

问题是:有没有办法获得“真实”的当前配置文件?

0 投票
2 回答
198 浏览

delphi - 在哪里可以找到 DeskUtil 文档?

在哪里可以找到 DeskUtil 文档/帮助?我正在尝试构建 Delphi 插件,但在将插件对接表单保存/注册/加载到活动 IDE 桌面时遇到了一些麻烦。我在这里和那里阅读了一些示例后正在使用 DeskUtil 方法,但是,示例并没有深入探讨这些方法的工作原理以及 IDE 加载/销毁的机制。是否有关于 DeskUtil 或 OpenTools Api 的官方文档/帮助?换句话说,像我这样的开发人员如何以及在哪里可以获得有关 IDE 和 OpenTools Api 的深入知识(不是文章或演示)?

谢谢你的帮助。

0 投票
3 回答
921 浏览

delphi - 如何从 Delphi 的开放工具 API 中检索新的单元名称

我在 Delphi XE 中编写了一个向导,它工作正常。但是,我还没有弄清楚如何访问 Delphi 的 OTA 可以创建的生成的默认单元名称(或表单名称或项目名称)。

在我的旧式向导中,我能够调用 ToolServices.GetNewModuleName 来发现一个可用的单元和表单名称,我可以在生成相关的源文件时使用它们。今天的开放工具 API 中的等价物是什么?

根据 ToolsAPI 单元的注释,我应该从 IOTAModuleCreator.GetImplFileName 方法返回一个空白,让 Delphi 生成文件名。我从这个方法返回一个空字符串,但仍然看不到在哪里可以访问 Delphi 生成的文件名。

0 投票
2 回答
286 浏览

delphi - 我可以从 DUnit GUITestrunner 中的代码调用 ToolsAPI 吗?

有没有办法在 ToolSAPI 单元中初始化全局变量 BorlandIDEServices 以便可以从 DUnit GUITestrunner 代码中使用它?

在本例中,Project 变量将为 nil,因为 BorlandIDEServices 变量未初始化。GUITestrunner 在 IDE 中以调试模式运行。

0 投票
1 回答
745 浏览

delphi - Delphi OpenTools API:如何获取 AfterCompile 通知?

OpenTools API 定义了一个接口,用于在编译之前之后得到通知:

我创建了一个导出此界面的向导:

并通过以下方式注册向导:

但两者都不是:

  • IOTAIDENotifier.BeforeCompile
  • IOTAIDENotifier.AfterCompile
  • IOTAIDENotifier.FileNotification
  • IOTAIDENotifier50.BeforeCompile
  • IOTAIDENotifier50.AfterCompile

被称为。我究竟做错了什么?


唯一叫过的就是

  • IOTAWizard.GetName
  • IOTAWizard.GetIDString

以该顺序。

0 投票
1 回答
1905 浏览

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

给定一个,我如何获得目标可执行文件的名称IOTAProject

来自GExpert 的 OpenTools API 常见问题解答

如何确定二进制/exe/dll/bpl/ocx/etc 的文件名。由编译或构建生成?
- 对于 Delphi 8 或更高版本,请使用IOTAProjectOptions.TargetName.
- 对于早期版本,该方法实现起来要复杂得多,因为它可能涉及扫描指定项目可执行文件扩展名的$E指令,然后在“OptputDir”指定的路径上查找二进制文件项目选项,或项目目录(如果该选项为空)(在许多其他可能性和复杂性中)。实现此类工具的最佳方式可能是从CodeGear CodeCentral 示例 ID 19823中的示例代码开始。

就我而言,我适合后者。给定一个IOTAProject接口,它的胆量是什么:


如果是 Delphi 8 或更高版本,(未经测试的)答案是:

但更难的是复杂的预德尔福 8。

Jedi JCL 内部有十几种方法TJclOTAExpert,它们可以一起用来模拟:

我将努力通过该代码。几周后,我希望能够发布我自己问题的答案。

但与此同时,我会打开它,让其他人因能够回答我的问题而获得声誉。

0 投票
3 回答
3550 浏览

delphi - 将单元自动添加到项目中

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

在此处输入图像描述

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

0 投票
2 回答
272 浏览

delphi - 在 Tools API 中提供方法体

多年前,我编写了一个代码模板,它采用一些简单的参数(点)并生成了一个类骨架。由于某些方法体中包含代码,因此我无法调用 InvokeClassCompletion 而只是将实现与声明放在一起(用户必须移动它们)。

我突然想到我可以编写一个代码模板脚本引擎来将这些方法插入到正确的位置,但是我看不到我应该如何导航文件。在 ToolsAPI.pas 中有 IOTAEditReader 和 IOTAEditWriter 的声明,但我猜缺少一个步骤 - 当然我不需要手动解析 Delphi 代码只是为了找到实现部分?

有没有人有这方面的经验?