微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在写一个插件,将 Delphi IDE Theme Editor与Rad Studio IDE(当前版本的这个工具作为外部应用程序一起运行),到目前为止,一切都正常工作(见下图),除了我无法想象的事实如何在Delphi IDE中刷新所选语法高亮颜色

让我解释一下,在标准选项中更改语法高亮颜色(Editor Options-> Color),您可以自定义任何元素并分配一个新的前景色和背景色,然后按下.好 .按钮IDE应用更改,IDE编辑器窗口将使用新设置进行更新.

目前,我可以修改和存储新的值,但是我不能指示Delphi IDE应用新的配置,更改只有在重新启动IDE时才可见.

搜索了ToolsAPI单元,我发现IOTAEditOptions,IOTAHighlighter和IOTAHighlightServices接口,但没有一个似乎包括刷新(重新加载)修改的设置的选项.

此外,我尝试unmangle(使用tdump)并直接调用coreide1XX.bpl文件功能,但这也不起作用.

00420B94 17411 1F39 Editcolorpage::TEditorColor::
00422188 17400 1F3A __fastcall Editcolorpage::TEditorColor::ColorClick(System::TObject *)
0042174C 17407 1F3B __fastcall Editcolorpage::TEditorColor::ColorSpeedSettingClick(System::TObject *)
004224BC 17396 1F3C __fastcall Editcolorpage::TEditorColor::DefaultClick(System::TObject *)
00422414 17397 1F3D __fastcall Editcolorpage::TEditorColor::EditorColorbroadcast(System::TObject *,Winapi::Messages::TMessage&)
00421584 17409 1F3E __fastcall Editcolorpage::TEditorColor::EditorColorCreate(System::TObject *)
00421730 17408 1F3F __fastcall Editcolorpage::TEditorColor::EditorColorDestroy(System::TObject *)
004217B0 17406 1F40 __fastcall Editcolorpage::TEditorColor::ElementListClick(System::TObject *)
004222E8 17399 1F41 __fastcall Editcolorpage::TEditorColor::FontClick(System::TObject *)
004225DC 17395 1F42 __fastcall Editcolorpage::TEditorColor::HelpClick(System::TObject *)
00421AE8 17404 1F43 __fastcall Editcolorpage::TEditorColor::InitLineFlags(const System::DelphiInterface<Toolsapi::IOTAHighlighterPreview>)
004219B8 17405 1F44 __fastcall Editcolorpage::TEditorColor::InitSamplePane()
00421BC8 17403 1F45 __fastcall Editcolorpage::TEditorColor::InitSyntaxEditView(const System::DelphiInterface<Toolsapi::IOTAHighlighterPreview>)
0042262C 17393 1F46 __fastcall Editcolorpage::TEditorColor::LoadHighlightPreviews()
004225F4 17394 1F47 __fastcall Editcolorpage::TEditorColor::MarkDirty()
004220E4 17401 1F48 __fastcall Editcolorpage::TEditorColor::SampleClick(System::TObject *)
00422080 17402 1F49 __fastcall Editcolorpage::TEditorColor::SetColorSpeedSetting(Vedopts::TColorSpeedSetting)
0042238C 17398 1F4A __fastcall Editcolorpage::TEditorColor::UpdateSamplePane()
00422814 17392 1F4B __fastcall Editcolorpage::TEditorColor::tbsetPreviewsChange(System::TObject *,int,bool&)
004AA8D4 17390 1F4C __fastcall Editcolorpage::initialization()
00423C38 17413 1F4D __fastcall Editdisplaypage::Finalization()

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

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

解决方法

应该具有所需效果的轻微攻击将是让您的插件启动“环境选项”对话框,并使运算符手动关闭.这将导致IDE根据提交的设置重新初始化其配置.

为此,获取一个项目(IOTAProject对象)上的句柄并调用

AProject.ProjectOptions.EditOptions;

AProject被定义为AProject:IOTAProject.

我知道这不是最优雅的解决方案,但如果它具有预期的效果,至少它有点实用.

原文地址:https://www.jb51.cc/delphi/102553.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐