在我去年的时候我就有这个了,而且这是我第二个第三方的控件(第一个是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. cocos2dx 菜单按钮回调方法传参 tag传参

    .h文件 void menuCallBack(CCObject* pSender); .cpp CCMenuItemSprite* item = CCMenuItemSprite::create( m ...

  2. Python访问私有变量

    代码: class Counter(object): __secount=0 publicfs=0 def getcount(self): self.__secount+=1 self.publicf ...

  3. 针对android方法数64k的限制,square做出的努力。精简protobuf

    1.早期的Dalvik VM内部使用short类型变量来标识方法的id,dex限制了程序的最大方法数是65535,如果超过最大限制,无法编译,把dex.force.jumbo=true添加到proje ...

  4. 30. Distinct Subsequences

    Distinct Subsequences OJ: https://oj.leetcode.com/problems/distinct-subsequences/ Given a string S a ...

  5. dd 命令实时进度监控

    dd脚本: #!/bin/sh if [ -d "${1}" ]; then echo "!mkdir" else } fi cd ${} name=`date ...

  6. php 分享两种给图片加水印的方法

    本文章向码农们介绍 php 给图片加水印的两种方法,感兴趣的码农可以参考一下本文章的源代码. 方法一:PHP最简单的加水印方法 <?php // http://www.manongjc.com ...

  7. NSSet、NSMutableSet基本用法

    NSSet.NSMutableSet基本用法 在Foundation框架中,提供了NSSet类,它是一组单值对象的集合,且NSSet实例中元素是无序,同一个对象只能保存一个. 一.不可变集合NSSet ...

  8. MapReduce从输入文件到Mapper处理之间的过程

    1.MapReduce代码入口 FileInputFormat.setInputPaths(job, new Path(input)); //设置MapReduce输入格式 job.waitForCo ...

  9. Spark核心概念

    1.Application     基于spark的用户程序,包含了一个Driver Program以及集群上中多个executor:     spark中只要有一个sparkcontext就是一个a ...

  10. Grunt 之 RequireJS

    RequireJs 提供了一个打包工具 r.js,可以将相关的模块打包为一个文件.相关说明:http://www.requirejs.org/docs/optimization.html 将相关的脚本 ...