德尔福 – SynMultiSyn荧光笔插入位置

德尔福 – SynMultiSyn荧光笔插入位置,第1张

概述我有SynMultiSyn荧光笔(syn HTMLcomplex) 由HTML(synHTML)和 JavaScript(synJScript)组成 如下: synHTML : TSynHTMLSyn;synJScript : TSynJScriptSyn;synHTMLcomplex: TSynMultiSyn;// HTML complexwith SynHTMLc 我有SynMultiSyn荧光笔(syn HTMLcomplex)
由HTML(synHTML)和 JavaScript(synjscript)组成
如下:

synHTML       : TSynHTMLSyn;synjscript    : TSynjscriptSyn;synHTMLcomplex: TSynMultiSyn;// HTML complexwith SynHTMLcomplex do begin  DefaultLanguagename:= 'HTML complex';  DefaultFilter      := 'HTML complex (*.HTML; *.htm)|*.HTML; *.htm';  DefaultHighlighter := synHTML;  with Schemes do begin    Add.Index:= 0;    with Items[0] do begin      Highlighter:= synjscript;      Schemename := 'JavaScript';      StartExpr  := '<script';      EndExpr    := '</script>';      with MarkerAttri do        Background:= clNone;    end;  end;end;

一旦进入SynEdit,是否有任何方法(属性或方法)知道光标(CaretY)是哪种Highlighter(synHTML或synjscript)?

有人可以帮忙吗?

解决方法 它可能但不是很容易实现.

下面的函数是Jan Fiala(PSPad editor的作者)使用的函数的改编.
对我来说它工作正常.非常感谢Jan!

function TfrmEditor.GetCurrentHighlighter: TSynCustomHighlighter;var  i       : integer;  seEditor: TSynEdit;begin  if (sActiveEditor = 'synEditor') then seEditor:= synEditor                                   else seEditor:= synEditor2;  with seEditor do    if Highlighter is TSynMultiSyn then    begin      i:= (Integer(TSynEditStringList(lines).Ranges[CaretY - 1]) and $F) - 1;      if (i < 0) then        result:= TSynMultiSyn(Highlighter).DefaultHighlighter      else        result:= TSynMultiSyn(Highlighter).Schemes[i].Highlighter    end    else      result:= Highlighter;end;

只要解释,Jan的原始功能就在下面.

“ – 这是我返回当前荧光笔的功能:

function TPSSynEdit.GetCurrentHighlighter: TSynCustomHighlighter;var  i: Integer;begin  if Highlighter is TSynMultiSyn then  begin    i := (Integer(TSynEditStringList(lines).Ranges[CaretY - 1]) and $F) - 2;    if (i > TSynMultiSyn(Highlighter).Schemes.Count - 1) or (i < 0) then      Result := TSynMultiSyn(Highlighter).DefaultHighlighter    else      Result := TSynMultiSyn(Highlighter).Schemes[i].Highlighter  end  else    Result := Highlighter;end;

我在TSynedit的后代有这个功能.你需要更换荧光笔,例如使用Editor.Highlighter和lines with Editor.lines或发送编辑器作为函数参数,并在开始之后添加:
与编辑做
开始
……”

简菲拉

总结

以上是内存溢出为你收集整理的德尔福 – SynMultiSyn荧光笔插入位置全部内容,希望文章能够帮你解决德尔福 – SynMultiSyn荧光笔插入位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存