RRU*_*RUZ 12 delphi toolsapi delphi-xe delphi-xe2
我正在编写一个插件来集成Delphi IDE Theme EditorRad Studio IDE(此工具的当前版本作为外部应用程序运行)到目前为止一切正常(见下图),除了我无法弄清楚的事实如何在Delphi IDE中刷新所选语法高亮颜色

让我解释一下,在标准选项中更改语法高亮颜色(编辑器选项 - >颜色),您可以自定义任何元素并分配新的前景色和背景色,然后如果按下. OK .按钮,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()
Run Code Online (Sandbox Code Playgroud)
How I can instruct to the Delphi IDE refresh the modified syntax highlight colors using OTA (Open Tools API)?
如果您需要更多信息或问题不明确,请告诉我.
一个应该达到预期效果的小技巧是让你的插件打开“环境选项”对话框,并让操作员手动关闭它。这会导致 IDE 根据提交的设置重新初始化其配置。
为此,获取项目(IOTAProject对象)的句柄并调用...
AProject.ProjectOptions.EditOptions;
其中AProject定义为AProject: IOTAProject.
我知道这不是最优雅的解决方案,但如果它达到了预期的效果,至少有点实用。