【转】代码编辑器(一)-TSynCompletionProposal用法
注意,本系列均转载自http://blog.163.com/zom1995@126/
网上有人给我一个SynEdit这个东西,因为我很喜欢自己编个代码编辑器,但要是用Delphi直接弄的,就我现在这样,肯定弄不出来。还好的是,这里面有Demo,不过全是英文的...

回到正题,其实我在百度搜了这个的用法——没有满意的,所以我就在这里说一下。
clBackground属性:背景色。clSelect属性:被选择的前景色。仅对DefaultType为ctCode时有效。clSelectText属性:被选中的文字颜色。仅对DefaultType为ctCode时有效。clTitleBackground属性:标题背景色。仅对DefaultType为ctCode时有效。DefaultType属性:决定SynCompletionProposal以什么样式显示。Editor属性:用于哪个SynEdit还是SynMemoEndOfTokenChr属性:默认是()[]. 就是,当输入前面其中之一的,就会关闭SynCompletionProposal。仅对DefaultType为ctCode时有效。TriggerChars属性:默认是“.” 当输入的字符是.弹出SynCompletionProposalInsertList属性:输入填充的文字ItemList属性:用于显示提示,注意要和InsertList对应NbLinesInWindow属性:显示的行数,默认为8(因为没有Height属性)。仅对DefaultType为ctCode时有效。Resizeable属性:决定SynCompletionProposal的大小是否可以调整。仅对DefaultType为ctCode时有效。ShortCut属性:设置快捷键(默认是Ctrl+空格,但是会跟切换输入法发生冲突)。TimerInterval属性:同Timer的Interval属性。Title属性:在SynCompletionProposal显示标题,仅对DefaultType为ctCode时有效。Width属性:调整SynCompletionProposal的宽度,仅对DefaultType为ctCode时有效。Option属性:
scoCaseSensitive:区分大小写。仅对DefaultType为ctCode时有效。scoLimitToMatchedText:自动过滤符合的文字。如果为False则选择第一个。仅对DefaultType为ctCode时有效。scoTitleIsCentered:标题居中。仅对DefaultType为ctCode时有效。scoUseInsertList:使用InsertList的内容。如果为False则使用ItemList的内容。仅对DefaultType为ctCode时有效。scoUsePrettyText:允许使用\color{clBlue}等格式化文字。如果为False则直接输出文字,不格式化。但是当DefaultType为ctHint和ctParam即使是False也仍然有效。scoUseBuiltInTimer:使用Timer,否则按TriggerChar里面的字符将不会弹出SynCompletionProposalscoEndCharCompletion:按下EndToken中的其中一个字符(空格和回车除外)完成CodeCompletion。仅对DefaultType为ctCode时有效。scoCompleteWithTab:使用Tab键关闭SynCompletionProposal。仅对DefaultType为ctCode时有效。scoCompleteWithEnter:使用Enter键关闭SynCompletionProposal。仅对DefaultType为ctCode时有效。
例:模拟vb6的自动列出成员的操作。

直接写成这样的也可以,但没有上面的效果好,具体见我的相册


不过有的人会问,我把TriggerChars改成了其他字符,为什么不弹出来这个框框,但按了相应的快捷键可以弹出?尝试把InserList里面的每一行内容前面加上TriggerChars里面输入的字符试试。如果不行的话,先一个空格,然后再按相应的按键。不过这种情况多见于不成对匹配的符号(除了小数点,但包括西文引号)。如下图:

下图是在前面加上了& 。但如果前面是文本不是符号可能不会弹出SynCompletionProposal。


DefaultType的用法,这里是以不同形式显示的SynCompletionProposal,默认为ctCode,也就是上图。另外两个是ctHint和ctParam,其中:

ctParam:将所有的都显示出来,但是得手动输入字符。这种情况多用于输入函数参数时提示。图:

不过,如果SynCompletionProposal里面的东西很多的话,用ctHint和ctParam,会全部显示SynCompletionProposal里面的内容,会有一部分看不到的。
已知问题:
解决方法:
procedure TForm8.SynCompletionProposal1Close(Sender: TObject); begin SynCompletionProposal1.NbLinesInWindow := ; //可以是任意一个整数,但是下次调用显示的是7个... end;
【转】代码编辑器(一)-TSynCompletionProposal用法的更多相关文章
- Python 代码编辑器怎么选?PyCharm、VS Code、Jupyter Notebook 都各有特色
Python 代码编辑器怎么选?PyCharm.VS Code.Jupyter Notebook 都各有特色,Jupyter 适合做数据分析这些需要可视化的操作,PyCharm 更适合做完整的 Pyt ...
- 代码编辑器Sublime Text 3 免费使用方法与简体中文汉化包下载
Sublime Text这款代码编辑器是Jeff 一直都在使用的,前段时间转用到版本3,因为感觉Sublime Text 3 启动速度更加快,运行更加流畅——虽然3 还是在Beta 阶段.下面就直接分 ...
- NanUI for Winform 使用示例【第一集】——山寨个代码编辑器
NanUI for Winform从昨天写博客发布到现在获得了和多朋友的关注,首先感谢大家的关注和支持!请看昨天本人的博文<NanUI for Winform发布,让Winform界面设计拥有无 ...
- 轻量、强大的代码编辑器控件-WinForm完美版
前段时间做个小项目需要用到一个代码编辑器控件,但网上搜了半天,居然没发现一个完全满意的编辑器.现有的一些编辑器有: FastedTextBox 优点:1. 轻量. 2. 样式美观. 3. DEMO完 ...
- 在线代码编辑器CodeMirror简介
1.什么是Code Mirror 最近做一个项目需要在网页上实现一个代码编辑器,支持语法高亮.自动缩进.智能提示等功能.发现Code Mirror刚好满足所有需求.Code Mirror是由js写的一 ...
- (视频) 《快速创建网站》 3.2 WordPress多站点及Azure在线代码编辑器 - 扔掉你的ftp工具吧,修改代码全部云端搞定
本文是<快速创建网站>系列的第6篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...
- 微软良心之作——Visual Studio Code 开源免费跨平台代码编辑器
微软良心之作——Visual Studio Code 开源免费跨平台代码编辑器 在 Build 2015 大会上,微软除了发布了 Microsoft Edge 浏览器和新的 Windows 10 预览 ...
- Sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux
我用过的编辑器不少,真不少- 但却没有哪款让我特别心仪的,直到我遇到了 Sublime Text 2 !如果说“神器”是我能给予一款软件最高的评价,那么我很乐意为它封上这么一个称号.它小巧绿色且速度非 ...
- 集成代码编辑器ACE的经验
ACE是最流行的在线代码编辑器之一,在CanTK的集成开发环境GameBuilder里也使用了ACE.ACE的功能非常强大,但是由于使用方法不当,大家反映GameBuilder的代码编辑器不好用.最近 ...
随机推荐
- NYOJ 49-开心的小明:01背包
点击打开链接 开心的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是 ...
- Linux下网络编程学习杂记
1.TCP/IP协议的体系结构包含四层:应用层(负责应用程序的网络服务,通过端口号识别各个不同的进程)->传输层(传输控制层协议TCP.用户数据报协议UDP.互联网控制消息协议ICMP)-> ...
- hbase1.1.2安装
环境:hadoop2.6.1,zk3.4.6 1.配置环境变量 sudo vi /etc/profile.d/hbase-env.sh export HBASE_HOME=/usr/local/hba ...
- IntelliJ IDEA显示行号方法
File->Settings->Editor->General->Appearence->Show line numbers
- 30. Distinct Subsequences
Distinct Subsequences OJ: https://oj.leetcode.com/problems/distinct-subsequences/ Given a string S a ...
- python 赋值,交换值理解
python里的赋值都是引用,第一次赋值就是定义. 看下面两个交换值的例子: 1. >>> a,b,c = 1,2,3 >>> a = b >>> ...
- RequireJS API
可以找到许多的解读,但是原文总是最重要的,也是最正宗的说明,直接访问 RequireJS 有时不太方便,这里将 RequireJS 2.0 API 的原文转载到博客园,方便查看. This is th ...
- WinCE下使用C#获得带毫秒的DateTime.Now
在WinCE下,使用DateTime.Now获取的系统时间是不带毫秒的,如果想要它带毫秒,需要耍点手段.话不多说,直接上代码: public static DateTimePrecisely { // ...
- 在Ubuntu Server14.04上编译Android6.0源码
此前编译过Android4.4的源码,但是现在Android都到了7.0的版本,不禁让我感叹Google的步伐真心难跟上,趁这周周末时间比较充裕,于是在过去的24小时里,毅然花了9个小时编译了一把An ...
- 游戏服务器生成全局唯一ID的几种方法
在服务器系统开发时,为了适应数据大并发的请求,我们往往需要对数据进行异步存储,特别是在做分布式系统时,这个时候就不能等待插入数据库返回了取自动id了,而是需要在插入数据库之前生成一个全局的唯一id,使 ...