由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荧光笔插入位置所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)