在我去年的时候我就有这个了,而且这是我第二个第三方的控件(第一个是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. java 的Swing

    1.原来的AWT组件来自java.awt包,而AWT组件的java应用程序在不同平台的界面显示不同.但是在不同平台运用Swing开发的应用程序,就可以使用同一的GUI界面. 2.SWing组件通常被称 ...

  2. 在 WPF 程序中使用 MVVM 模式

    MVVM 模式是一个很久之前的技术了,最近因为一个项目的原因,需要使用 WPF 技术,所以,重新翻出来从前的一段程序,重温一下当年的技术. MVVM 模式 MVVM 实际上涉及三个部分,Model, ...

  3. 洛谷P1518 两只塔姆沃斯牛 The Tamworth Two

    P1518 两只塔姆沃斯牛 The Tamworth Two 109通过 184提交 题目提供者该用户不存在 标签USACO 难度普及+/提高 提交  讨论  题解 最新讨论 求数据 题目背景 题目描 ...

  4. 洛谷P2264 情书

    P2264 情书 88通过 971提交 题目提供者lin_toto 标签字符串 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 yyy快把题目改回来 噫 这题的题目好逗啊... 情书std ...

  5. Compilation failed: this version of PCRE is not compiled with PCRE_UTF8 support at offset 0

    在安装pcre-8.13.tar.gz时候出了错,说是缺少libpcre.so.0 下面是解决方法.真不容易哦,一个问题来没解决,新问题就出来了.一环扣一环,会搞死去.. errorgrep: err ...

  6. Nodejs笔记(一)

    Node近些日子大火,看样子js大有统一前端后台的趋势... Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度快,性 ...

  7. [前端 2]常用的JQuery和Dom页面取值与赋值

    导读:书到用时方恨少,需要基础知识的时候,才悔恨自己没有总结学习好.前段时间调了好长时间的页面,突然发现自己之前不怎么在意的取值和赋值,真的是自己一个很薄弱的地方,有时候查半天都找不到一个对的,现在用 ...

  8. iOS 平台开发OpenGL ES程序注意事项

    本人最近从Android平台的OpenGL ES开发转到iOS平台的OpenGL ES开发,由于平台不同,所以开发中会有一些区别,再次列出需要注意的几点. 1.首先需要了解iOS主要开发框架,再次仅介 ...

  9. javascript ES5 Object对象

    原文:http://javascript.ruanyifeng.com/stdlib/object.html 目录 概述 Object对象的方法 Object() Object.keys(),Obje ...

  10. PayPal 开发详解(七):运行REST API SAMPLE

    1.编译成功,修改配置文件 sdk_config.properties ,使用我们申请的测试帐号执行收款测试,clientId 和 clientSecret 参见 PayPal 开发详解(五) 2.将 ...