在我去年的时候我就有这个了,而且这是我第二个第三方的控件(第一个是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没有设置颜色的话是这个效果:
保留字是加粗的,注释是倾斜的(Delphi编辑器的风格)。
--显示代码行数
SynEdit和SynMemo有一个Gutter类,其中有一个ShowLineNumber,把这个设置为True就可以了。
除此之外:

DigitCount:显示数字的个数,默认是4。如果LeadingZeros为True是这个效果:

AutoSize:自动调整数字个数。默认是False。

Gradient:通常和GradientEndColor和GradientStartColor,GradientSteps配合使用。默认是False,如果为True是这种效果
其中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代码,效果如下:

颜色默认设置。
如果想多个高亮也可以,一个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,然后单击"...",如图:
选择要修改的一项,单击“Edit”,后面有两个Keystroke,意思是可以使用两个快捷键。
Ctrl和Alt是不可以单独使用的,上图是因为截图的时候按了Alt+PrintScreen...所以是这个结果
单击文本框然后,按组合键之后单击OK完成设置。
===================================================================================================
其实,只有上面的一些是远远不够的,还有一些比如打开,新建,保存文件、查找等等,这些就需要其他的控件或对话框来做了,比如查找对话框、打开/保存对话框等等。

【转】代码编辑器(二)-SynEdit的更多相关文章

  1. 吾八哥学Python(二):Python代码编辑器的选用

    Python开发环境配置好了,但发现自带的代码编辑器貌似用着有点不大习惯啊,所以咱们就找一个"好用的"代码编辑器吧,网上搜了一下资料,Python常用的编辑器有如下一些: 1. S ...

  2. NanUI for Winform 使用示例【第一集】——山寨个代码编辑器

    NanUI for Winform从昨天写博客发布到现在获得了和多朋友的关注,首先感谢大家的关注和支持!请看昨天本人的博文<NanUI for Winform发布,让Winform界面设计拥有无 ...

  3. 微软良心之作——Visual Studio Code 开源免费跨平台代码编辑器

    微软良心之作——Visual Studio Code 开源免费跨平台代码编辑器 在 Build 2015 大会上,微软除了发布了 Microsoft Edge 浏览器和新的 Windows 10 预览 ...

  4. 【转】代码编辑器(一)-TSynCompletionProposal用法

    注意,本系列均转载自http://blog.163.com/zom1995@126/ 网上有人给我一个SynEdit这个东西,因为我很喜欢自己编个代码编辑器,但要是用Delphi直接弄的,就我现在这样 ...

  5. 介绍linux下Source Insight强大代码编辑器sublime_text_3

    背景 1 一. 运行环境 1 二.安装环境配置 1 三.创建快捷方式 1 四.配置全局环境 2 五.操作界面 3 背景 在windows操作系统系统下,文本代码编辑器众多,各路英雄豪杰争相写了许多强大 ...

  6. Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

    Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Wind ...

  7. Github Atom开源文本代码编辑器- 由 Github 打造的下一代编程开发利器

    个人理解:Github 热度超凡的一个项目Atom,electron是整个atom的核心,对于electron可以理解成 electron =io.js + Chromium    通过 Electr ...

  8. 如何让VB6代码编辑器垂直滚动条随鼠标滚轮滚动

    VB6毕竟是很老的产品了,它的代码编辑器垂直滚动条并不能随鼠标的滚轮而滚动,这个问题会让我们在编写代码的时候觉得很不方便,不过还是有一种方法可以解决这个问题的.    先下载一个微软发布的“VB6ID ...

  9. 代码编辑器——Visual Studio Code

    一.介绍 Visual Studio Code(简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮.智能代码补全.自定义热键.括号匹配.代 ...

随机推荐

  1. pytest学习笔记(三)

    接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, test_compute.py ...

  2. canvas-star6.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. opencv 连通域需要的函数解析

    OpenCV支持大量的轮廓.边缘.边界的相关函数,相应的函数有moments.HuMoments.findContours.drawContours.approxPolyDP.arcLength.bo ...

  4. 解决wamp mysql数据库出现乱码的问题。

    一般的乱码情况: 如果在控制台上出现這样的乱码,一般在phpmysqladmin上也会出现乱码,因为他们都一样 一个在控制台出现,一个在页面出现. 首先在mysql.exe上输出 mysql>S ...

  5. 查看Eclipse版本号的方法

    查看Eclipse版本号的方法如下所示: 1:假设Eclipse已打开Eclipse的菜单栏: Help-->About Eclipse弹出框中会显示一排logo,点击eclipse的那个log ...

  6. python 多行匹配

    content = ''' abcdefg hijklmn opq rst uvw xyz ''' r = re.compile('\S+cde\S+|\S+klm\S+|^xyz$', re.MUL ...

  7. OpenGL函数解析之glMatrixMode(GLenum mode)

    函数原型:void glMatrixMode(GLenum mode) 函数说明:glMatrixMode函数只有一个枚举类型的参数mode,用来指定哪一个矩阵堆栈式下一个矩阵操作的目标. mode有 ...

  8. sorcketlog

    正在运行的API有bug,不能var_dump进行调试,因为会影响client的调用. 将日志写到文件,查看也不方便,特别是带调用栈或大数据结构的文件日志,查看日志十分困难. 这时候用SocketLo ...

  9. Linux:/bin/bash和/bin/sh的区别

    bash.dash(/bin/bash和/bin/sh) 原文:http://www.cnblogs.com/dkblog/archive/2011/04/02/2003822.html Linux中 ...

  10. 解决error C2011: 'fd_set' : 'struct' type redefinition的方法

    http://www.cnblogs.com/ark-zhang/archive/2013/06/19/3144383.html   首先说明这个问题由于重复定义引起的编译错误. 先说明解决方法,然后 ...