代码编辑器(二)-SynEdit

在我去年的时候我就有这个了,而且这是我第二个第三方的控件(第一个是DevExpress),这个是专门做代码编辑器的。安装方法:点我

安装成功了之后,会在Tool Palette看到两个:SynEdit, SynEdit Highlighters。
SynEdit中包含的:
SynEdit, SynMemo, DBSynEdit:主要的编辑器,用途有差别
SynMultiSyn:显示多个高亮
SynCompletionProposal:其实我也说不明白是什么名。在VB, VC++和Delphi等等按"."弹出来的那个框就是SynCompletionProposal。
还有的比如AutoComplete我就真的没用过了。
SynEdit Highlighters包含的就是一些编程语言的语法高亮了,比如cpp, pas, bas, asm, java, JScript, HTML等等。
===================================================================================================
SynEdit和SynMemo的常用属性如下:
注:标明为“-”表示还不清楚怎么用
Align, Anchors, Contrains:同一般控件。
BookmarkOptions:Bookmark相关设置
BookmarkImage:Bookmark显示的图片,留空也没关系
DrawBookmarksFirst:-
EnableKeys:允许通过快捷键添加Bookmark
GlyphsVisible:不显示Bookmark,但仍然可以跳转到指定的Bookmark
LeftMargin:Bookmark和编辑器左边缘距离
XOffset:-
BorderStyle:外边框样式
Color:文本框背景色
InsertCaret, OverwriteCaret:插入/改写状态下光标样式
ctBlock:单个字符,通常用于Overwrite模式
ctHalfBlock:半个字符
ctHorizontalLine:水平光标显示在字符底部
ctVerticalLine:垂直光标,用于Insert模式
InsertMode:插入(Insert)/改写(Overwrite)模式。
Keystrokes:包括一些常用功能,如:剪切、复制、粘贴、撤销等。可添加删除等。
MaxUndo:撤销最大值
ReadOnly:只读
RightEdge:右边缘线位置
RightEdgeColor:右边缘线颜色
WantTabs:允许使用Tab键缩进
ScrollBars:滚动条,一般不改
SelectionColor:选择文本颜色
ScrollHintColor:行数提示颜色
ScrollHintFormat:行数提示格式
shfTopLineOnly:显示范围的第一行
shfTopToBottom:同Windows 7资源管理器

SelectionMode:选择模式

smNormal:默认
smLine:整行
smColumn:指定矩形范围

TabWidth:Tab宽度,当WantTabs为True时有效

Options:
eoAltSetsColumnMode:-
eoAutoIndent:换行自动缩进
eoAutoSizeMaxScrollWidth:-
eoDisableScrollArrows:滚动条设置(待修改)
eoDragDropEditing:允许拖拽移动、复制
eoDropFiles:允许通过拖拽打开文件
eoEnhanceHomeKey、eoEnhanceEndKey:当按下Home、End键将光标移动到文字最前/后方
eoGroupUndo:分组撤销
eoHalfPageScroll:一次滚动一半
eoHideShowScrollBars:允许自动隐藏滚动条
eoKeepCaretX:-
eoNoCaret:隐藏光标
eoNoSelection:禁用选择文本
eoRightMouseMovesCursor:允许鼠标右键移动光标
eoScrollByOneLess:-
eoScrollHintFollows:允许行数提示跟随垂直滚动条
eoScrollPastEof:垂直滚动条根据行数确定
eoScrollPastEol:值为True则后面部分以空格填充,否则同普通文本框
eoShowScrollHint:显示行数提示
eoShowSpecialChars:允许显示特殊字符
eoSmartTabDelete:智能删除Tab(缩进)
eoSmartTabs:智能水平制表(缩进),当WantTabs为True时有效
eoSpecialLineDefaultFg:-
eoTabIndent:-
eoTabsToSpaces:使用空格缩进
eoTrimTrailingSpaces:自动去掉尾部空格
===================================================================================================
首先,启动Delphi,创建个VCL项目。
然后添加SynEdit或者SynMemo(其实这两个差不多),Align属性为alClient。
再添加一个高亮。比如cpp的,就添加SynCppSyn。颜色、样式(加粗,倾斜,下划线,删除线)可以自己设置。
但是这样是没有任何效果的,因为SynEdit或者SynMemo的Highlighter属性是空的。
当添加SynCppSyn或者其他的高亮之后,双击就可以了。
然后直接运行程序。
输入比如下图的代码。如果SynCppSyn1没有设置颜色的话是这个效果:
代码编辑器(二)-SynEdit_第1张图片
保留字是加粗的,注释是倾斜的(Delphi编辑器的风格)。
--显示代码行数
SynEdit和SynMemo有一个Gutter类,其中有一个ShowLineNumber,把这个设置为True就可以了。
做一个简单的编辑器——第三方控件SynEdit(Delphi 2009) - ZomGraves - 编程为主
除此之外:
DigitCount:显示数字的个数,默认是4。如果LeadingZeros为True是这个效果:
做一个简单的编辑器——第三方控件SynEdit(Delphi 2009) - ZomGraves - 编程为主
AutoSize:自动调整数字个数。默认是False。
Gradient:通常和GradientEndColor和GradientStartColor,GradientSteps配合使用。默认是False,如果为True是这种效果
做一个简单的编辑器——第三方控件SynEdit(Delphi 2009) - ZomGraves - 编程为主
 
其中GradientEndColor是clBtnFace, GradientStartColor是clWindow,颜色可以自己设置。
ZeroStart:0为第一行。默认是False,也就是第一行显示的是1。值为True会忽略LineNumberStart属性。
UseFontStyle:使用设置的字体样式,指的是Gutter里面的Font类。
LineNumberStart:以指定的数字为第一行。
--显示多个高亮
这种情况在HTML居多,因为一部分人在写HTML代码的时候把CSS层叠样式也写在HTML文件里面。如果直接用一个SynHTMLSyn,CSS层叠样式部分是不能显示出高亮的,所以这里就需要SynMultiSyn了。
SynMultiSyn的用法和其他的高亮一样,在SynEdit或者SynMemo设置Highlighter属性之外,还需要至少两个不同的高亮,比如HTML和CSS(分别是SynHTMLSyn和SynCssSyn)。
先添加SynEdit或者SynMemo,然后依次添加SynMultiSyn,SynHTMLSyn和SynCssSyn(注意和SynCsSyn区分,SynCsSyn是C#的高亮);再将SynEdit或SynMemo的Highlighter设置为SynMultiSyn1。
回到SynMultiSyn1,将DefaultHighlighter设置为SynHTMLSyn1,然后找到Schemes属性然后单击“...”,再单击“Add”。其中:
CaseSensitive:区分大小写
Highlighter:在StartExpr和EndExpr中间显示的高亮
EndExpr:作为Highlighter指定的高亮的结束部分
MarkerAttri:标记部分颜色,字体设置
SchemeName:用于区分
StartExpr:作为Highlighter指定的高亮的开始部分

把Highlighter设置为SynCssSyn1,然后设置StartExpr为“<style>”,EndExpr设置为“</style>”,然后直接运行程序,编写HTML代码,效果如下:

代码编辑器(二)-SynEdit_第2张图片
颜色默认设置。
如果想多个高亮也可以,一个SynMultiSyn就搞定,还是在Schemes添加,修改。
--列出成员
实现这个操作,就需要另一个控件了——SynCompletionProposal。之前我已经写了关于SynCompletionProposal的日志。
链接:http://www.cnblogs.com/Zory/p/5186677.html
在原来的基础上(HTML+CSS)添加一个SynCompletionProposal,更名为ScpHTML。然后在Columns添加一个Column,接下来设置Editor属性,设置之前的SynEdit或者SynMemo。
TriggerChars改成“<”。
EndOfTokenChr改成“<> ”。
Options属性里面的scoUseInsertList, scoUsePrettyText, scoBuiltInTimer设置为True,其他的不改。
TimerInterval改为100或更少
InsertList和ItemList分别输入填充和提示文字,然后运行程序,输入HTML代码试试。
--Keystrokes常用功能
其实在添加SynEdit或者SynMemo之后就已经设置好Keystrokes了,可以在运行时直接使用。动态创建的SynEdit或者SynMemo也可以直接使用。
一般情况下这里是不用修改的。修改很简单,在SynEdit或者SynMemo中找到Keystrokes,然后单击"...",如图:
代码编辑器(二)-SynEdit_第3张图片
选择要修改的一项,单击“Edit”,后面有两个Keystroke,意思是可以使用两个快捷键。
代码编辑器(二)-SynEdit_第4张图片
Ctrl和Alt是不可以单独使用的,上图是因为截图的时候按了Alt+PrintScreen...所以是这个结果
单击文本框然后,按组合键之后单击OK完成设置。
===================================================================================================
其实,只有上面的一些是远远不够的,还有一些比如打开,新建,保存文件、查找等等,这些就需要其他的控件或对话框来做了,比如查找对话框、打开/保存对话框等等。

你可能感兴趣的:(代码编辑器(二)-SynEdit)