问题标签 [toolsapi]

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 投票
1 回答
185 浏览

delphi - TOrderedListEditDlg 有官方接口吗?

在专家中,我想重新使用 Delphi 显示的对话框来编辑项目的库路径并用于类似目的:

在此处输入图像描述

我发现了一个使用它的技巧(在页面上查找 TOrderedListEditDlg)。正如我认为撰写链接文章的人知道他所做的那样,我对一个不那么 hacky 的解决方案没有太大希望,但谁知道......所以:你知道 TOrderedListEditDlg 的官方接口(很可能是 OTA)吗?

PS:我知道重新创建整个对话可能很简单,但我喜欢一致性和 DRY 原则。

0 投票
2 回答
631 浏览

delphi - bpl delphi 专家和 dll delphi 专家有哪些区别

我在 delphi IDE 专家中工作,现在为了避免依赖问题,我正在考虑按照这些答案之一中的建议将这个专家重建为 dll 专家,现在我的专家(编译为 bpl)访问ScreenApplication全局变量(实例Delphi IDE),所以我想知道我是否将我的专家编译为 dll,我仍然可以访问这些变量,我也想知道which are the main differences between a bpl delphi expert and a dll delphi expert?

0 投票
2 回答
754 浏览

delphi - delphi IDE 专家如何枚举 IDE 的形式

我在 delphi IDE 专家中工作,我需要枚举 Delphi IDE 显示的所有表单,目前我正在使用该Screen.Forms属性,但我想知道是否存在使用 OTA 的另一种方法。因为Screen.Forms当我的专家是 BPL 但现在我正在迁移到 dll 专家时使用唯一的作品。

0 投票
2 回答
4994 浏览

delphi - 取消选中“启用运行时主题”或删除 Delphi XE 中的内部清单?

我有一个在 Delphi XE 中构建的组件,我想以下列方式使用它:

  1. 用户创建一个新的空白项目。

  2. 用户将我的组件放在表单上。

  3. 我的组件中的一些特殊设计时代码被执行,这将更改项目选项以取消选中项目选项中的“启用运行时主题”复选框。我不确定这是否可能,所以我问是否可能。

如果#3 是不可能的,那么我需要另一个解决方案来解决这个组件的“可用性”问题;我遇到的问题是,如果用户没有通过取消选中启用运行时主题来禁用静态链接的清单文件,那么链接到 EXE 的静态生成的清单似乎会覆盖我希望在 EXE 之外拥有的外部清单文件,在磁盘。我还需要在运行时修改这些清单,因此需要外部清单。当然,我可以在需要时使用这些清单启用运行时主题功能。第二个问题是关于外部和内部清单的优先级;当您选中“启用运行时主题”时,外部清单能否以某种方式优先于链接到 Delphi 应用程序的内部清单资源?

#3 以外的可接受解决方案:

A. 不知何故导致 Delphi 不生成清单。B. 以某种方式在运行时让 Windows 识别并优先考虑外部 .manifest 文件,即使找到内部文件也是如此。

C. 最差解;在运行时,在我的组件中的 CoCreateInstance 失败后,我可以枚举资源,报告存在外部清单并将我们搞砸,并依靠使用我的组件的开发人员阅读我的组件吐出的运行时错误消息,告诉他们禁用运行时主题复选框并重建他们的应用程序。提取和读取清单已在此处的另一个 stackoverflow 问题中进行了介绍,其中 C++ 代码可以轻松转换为 Delphi。

更新接受的答案完全符合我的要求,但被认为是一种黑客行为,而大卫关于激活上下文的答案更加理智,并且是推荐的方法。

Update2通过项目设置明确指定要链接的清单,通常会在更高版本的 Delphi(XE5 及更高版本)中覆盖内置清单。

0 投票
3 回答
1291 浏览

delphi - 如何让欢迎页面浏览器从 OTA 包向导中导航到某个 URI?

我要做的是创建一种查看(而不是编辑)包含在项目中的 HTML 页面的能力。欢迎页面已经嵌入了网络浏览器,因此它似乎是一个很好的选择。

古玩为什么?这是一个带有背景信息的问题。

0 投票
1 回答
919 浏览

delphi - 如何为 HTML 文档更改特定项目经理的本地菜单项的行为?

我正在复制项目页面选项 IDE 插件¹。特别是,此插件将项目管理器中打开操作的默认行为² 替换为自己的行为 - 在用于显示欢迎页面的同一内部浏览器中打开 HTML 页面。所以,我也想做同样的事情,但目前我无法到达这个菜单。

我尝试了 IOTAProjectManager 接口,它有助于添加项目管理器的菜单项³,但我知道它notifiers是相互隔离的,所以很可能这个 API 对我的目的没有用。此外,我试图挂钩到应用程序范围的动作处理。它绝对没有给我任何结果,可能根本没有使用操作列表。

我想,上面的配置让我别无选择,只能求助于黑客,这使得黑客解决方案在这里非常受欢迎。那么,有什么想法吗?


¹有关更多信息,请参阅此 Q

² 有 3 个相关项:打开显示标记显示设计器。在没有加载项的情况下打开默认显示设计器。

³ 事实上,这个 API 允许即时添加项目,它可能会使事情变得更加复杂。


图示的上下文菜单:

在此处输入图像描述 在此处输入图像描述

正如TOndrej在下面的评论中提到的,打开菜单项的行为仅针对在相应对话框中配置为“项目页面”的 HTML 文档进行了更改。

0 投票
2 回答
1326 浏览

delphi - 如何指示 Delphi IDE 使用 OTA(Open Tools API)刷新修改后的语法高亮颜色?

我正在编写一个插件来Delphi IDE Theme Editor与 Rad Studio IDE 集成(该工具的当前版本作为外部应用程序运行)到目前为止一切正常(见下图),除了我无法弄清楚的事实如何在 Delphi IDE 中刷新选定的语法高亮颜色

在此处输入图像描述

让我解释一下,在更改语法突出显示颜色的标准选项(编辑器选项->颜色)中,您可以自定义任何元素并分配新的前景色和背景色,然后如果您按下. OK .按钮,IDE 将应用更改,IDE 编辑器窗口更新为新设置。

目前我可以修改和存储新值,但我不能指示 Delphi IDE 应用新配置,只有重新启动 IDE 才能看到更改。

我搜索了 ToolsAPI 单元,找到了IOTAEditOptions,IOTAHighlighterIOTAHighlightServices接口,但似乎没有一个包含刷新(重新加载)修改设置的选项。

我还尝试了 unmangle(使用 tdump)并直接调用 coreide1XX.bpl 文件的函数,但这也不起作用。

How I can instruct to the Delphi IDE refresh the modified syntax highlight colors using OTA (Open Tools API)?

如果您需要更多信息或问题不清楚,请告诉我。

0 投票
1 回答
688 浏览

delphi - 使用 Delphi Open Tools API 将我自己的项目添加到 Delphi IDE Insight (F6)

我想使用或添加一个条目到 Delphi 中的 IDE 洞察功能INTAIDEINsightServiceAddItemAddActionList

根据 Delphi OTA wiki, INTAIDEINsightService 允许您注册自己的操作。我能找到的唯一参考是here,它提到了API 的名称,并且它根本存在。Delphi 帮助中没有关于它的内容。Delphi XE 中的ToolsAPI.pas单元在此界面中显示了两个方法,可让您注册操作:

评论说“项目将显示为[描述|]类别| TCustomAction.Caption。不指定类别的包含操作将不会显示。”。

我无法使用操作找到任何其他文档或示例。一个简单的“hello world”示例,其中一个操作或只是一个项目,使用描述或类别“helloworld”注册,然后可以搜索并在您按下 F6 时显示,这将是完美的,但首选操作。

看起来必须实现这样的向导才能INTAIDEInsightItem在 IDE 洞察力中呈现自身,但我不确定这是否是 hello-world 示例的“必需”。我不确定您是否必须使用操作,或者是否定期添加“项目”就足够了。

(我的最终目标是创建一个新的 gExperts 风格的专家来“通过使用 IDE 洞察力按名称搜索来打开我的库路径中的任何单元”,但我将首先将单元名称添加到 ide 洞察力中,一次一个项目.)

0 投票
3 回答
3550 浏览

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

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

在此处输入图像描述

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

0 投票
1 回答
2184 浏览

delphi - 表单中的消息“未找到工具 API”

在一个包中,我有一个实现 ToolAPi IOTAIDENotifier接口的组件。该软件包可以设置、编译并显示在调色板上。该组件的一个方法被设计为在使用它的项目被编译(而不是执行)时做一些特定的事情......到目前为止一切正常。

当我在属于另一个项目的 TForm 上使用此组件时,问题稍后出现。当我尝试构建它时,我收到编译器消息File not found: ToolsAPI.dcu

以下是该包的用途:

PACKAGESETUP仅在我编译 bpl 时定义

当我双击错误消息时,IDE 会打开文件,其中声明了对 ToolsAPI 的引用...我怎样才能摆脱这个问题?