Sto scrivendo un plug-in per integrare lo Delphi IDE Theme Editor
con l'IDE di Rad Studio (la versione corrente di questo strumento viene eseguito come un'applicazione esterna), quindi tutto funziona correttamente (vedi l'immagine qui sotto), eccetto il fatto che posso t capire come aggiornare i colori di evidenziazione della sintassi selezionati nella IDE di DelphiCome istruire l'IDE Delphi per aggiornare i colori dell'evidenziazione della sintassi modificata usando OTA (Open Tools API)?
mi spiego meglio, in opzione standard di cambiare i colori delle sintassi (Editor Opzioni-> Colore) è possibile personalizzare ogni elemento e assegnare un nuovo colore di primo piano e di sfondo, quindi se si preme il . OK . l'IDE applica le modifiche e le finestre dell'editor IDE vengono aggiornate con nuove impostazioni.
Attualmente è possibile modificare e memorizzare i nuovi valori, ma non è possibile istruire l'IDE Delphi per applicare la nuova configurazione, le modifiche sono visibili solo se l'IDE viene riavviato.
Ho cercato l'unità ToolsAPI e ho trovato le interfacce IOTAEditOptions
, IOTAHighlighter
e IOTAHighlightServices
ma nessuna sembra includere un'opzione per aggiornare (ricaricare) l'impostazione modificata.
Inoltre, ho provato a sbrogliare (usando tdump) e chiamare direttamente le funzioni del file coreide1XX.bpl, ma questo non ha funzionato.
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()
How I can instruct to the Delphi IDE refresh the modified syntax highlight colors using OTA (Open Tools API)?
fatemi sapere se avete bisogno di maggiori informazioni o se la questione non è chiara.
È una soluzione lunga, ma forse chiamata 'IOTAEditView.Paint' per ogni editor di moduli attivo? – NGLN
Non penso che funzionerà @ NGLN, perché, a quanto ho capito, l'IDE carica solo le impostazioni dei colori sull'initalizzazione. Inoltre, non credo ci sia un'interfaccia in OTAPI che ti permetta di reinizializzare quegli attributi. Correzione – LaKraven
: Queste impostazioni sembrano essere reinizializzate quando si chiude la finestra di dialogo Opzioni ambiente. Un trucco potrebbe essere quello di avere il proprio plugin per aprire la finestra di dialogo Opzioni Ambiente e chiedere all'utente di chiuderlo manualmente. Non molto elegante, ma dovrebbe essere efficace. – LaKraven