Delphi Code Editor有几个特性在编写大规模代码时非常有用。下面分别进行介绍:
1、Code Templates(代码模板)
使用代码模板可把任意预定义代码(或正文)插入到单元文件中。当在Code Editor中编辑代码时,按下键盘的【Ctrl + J】,就可使用代码模板;此时会弹出一个列表框,其中列出了可供选择的模板。从列表中选取一个模板,按下Enter键,与所选模板相对应的正文就会被插入到单元文件中。如下图:
可以通过“Environment Options”对话框的“Code Insight”页面来增加新模板或编辑现有模板;当然,也可以用文本编辑器打开代码模板文件,编辑其中的代码模板。代码模板文件为DELPHI32.DCI,位于Delphi安装目录下Bin目录中。
可*修改代码模板。例如,可以这样修改代表for语句的代码模板:
1
2
3
4
|
for I := 0 to Pred(|) do begin end; |
注意上面的管道符(|)。代码模板入中中的管道是一个位置标识符,它决定正文插入代码中光标所在位置。
Tip
如果对代码模板文件进行了大修改,一定要对修改过的代码模板文件进行备份,以备以后使用。因为当更新或重新安装Delphi时,Delphi安装程序会覆盖掉修改过的DELPHI32.DCI文件。
代码模板不仅仅只用于代码。例如下面的代码:
1
2
3
4
5
|
{****************************************************} {* Filename and Version *} {* Copyright(C) pchmonster 2012 *} {* All rights reserved. *} {****************************************************} |
这段注释版权信息基本是不变化的,因此可将它做成一个模板,以便在新创建的单元中快速将此版权信息添加进去。可以把日常编程中经常使用的正文做成代码模板。
2、Code Parameters(代码参数)
Code Editor的代码参数特性实现一个提示窗(Tooltip),给用户提示VCL方法或API函数所需的参数信息。有好几百个VCL方法和Windows API函数,要记住每个函数的参数是十分困难的。当用户键入一个方法名时,代码参数特性为用户显示该方法的参数,从而节省用户的事件。比如说调用SetBounds方法,当键入左括号后,弹出提示窗,如下图:
提示窗中列出了每个参数,马上要键入的参数以粗体显示,键入一个参数后,其后的参数又以粗体显示,直至输入完所有参数。待键入所有参数后,代码参数提示窗就会消失。可在“Environment Options”对话框的“Code Insight”页面设置代码参数选项。
3、Code Completion(代码完成)
加入一个类变量名和点操作符(.),Code Editor就会显示一个列表框,其中列出该类的所有属性和方法。比如说,有一个Memo组件,键入:
1
|
Memo. |
并稍停顿一下,就会弹出如下的列表框:
接下来,可用两种方法来选择表中的项。
- 方法一、用鼠标或键盘指定列表框中的一个属性或方法,按Enter键,则指定的属性和方法会被插入到代码中。
- 方法二、键入要插入代码中的属性或方法的头几个字母,Delphi在列表框中查找与之匹配的属性或方法,并加亮显示最匹配输入字母的项,若这个项就是所要的属性或方法,按下Enter键盘即可插入到代码中。
若不想使用Code Completion列表框,按下键盘的ESC键,列表框就会消失。
Code Completion提供属性和方法列表供用户选择,从而节省用户事件,同时可以避免属性名、方法名的拼写错误及大小写错误。可以选定所要的属性或方法,按下Enter键,Delphi就会将它插入到代码中。
4、Tooltip Symbol Insight(工具提示)
把鼠标光标移到源代码中的任意标识符上,就会弹出一个提示框,例如,在任意标准工程中接口段,将光标定位到“TForm1 = Class(TForm)”上,会弹出如下的窗口:
这一行显示了TForm类声明,并告诉用户TForm是在Forms.pas单元的704行声明的。
该工具提示会告诉用户有关程序中任一变量的信息,当用户忘记了一个变量的类型时,使用这个功能会特别方便。
5、Class Completion(类完成)
在interface接口段中键入一方法或属性的声明后,并按下【Ctrl + Shift + C】,Delphi就会把必须的代码加到implementation实现段中,从而完成这个类。下面通过简单的联系来熟悉这个特性:
(1)启动一个空工程。
(2)切换到Code Editor中,找到interface接口段中的窗体类声明。
(3)在该窗体类声明中的public段中键入以下代码:
(4)按下【Ctrl + Shift + C】组合键,Delphi自动将Test和GetSomething方法的代码添加到implementation段中了,并将光标定位到第一个方法中。如下图:
Class Completion适用于属性声明和方法。键入一个属性声明,按下【Ctrl + Shift + C】键,Delphi就会自动完成该属性的声明。它还能为属性添加一个write方法。现在理解这个write方法有点困难,在以后的讲解中能编写自己的组件后,就会明白的。
Class Completion特性在编写组件时,可节省许多时间,使用一段时间后,就会觉得再也离不开它了。
6、Module Navigation(模块导航)
它使用户能够从implementation段中一个方法快速移动到interface段中该方法声明处;反过来也可以。还是做个练习来说明它把。
(1)找到上面的练习,我们修改过窗体的类声明,添加了GetSomething和Test方法过程;
(2)点击包含Test过程的声明的行;
(3)然后按下【Ctrl + Shift + 向下箭头】组合键,Code Editor就会跳到implementation段中的Test过程代码处;
(4)按下【Ctrl + Shift + 向上箭头】组合键,Code Editor又会跳到interface段中Test过程的声明处;
使用模块导航,能方便的在implementation段和interface段之间快速移动。
Tip
用上箭头或下箭头无关紧要,使用其中任一个按钮都可在interface段和implementation段之间来回切换。
7、Module Browsing(模块浏览)
模块浏览是另一种模块导航工具。在Code Editor中,按住【Ctrl】键,把鼠标光标置于一个标识符名上,该标识符就会以蓝色加亮显示并加上下划线;点击这个标识符,Delphi会告之该标识符声明在源代码中的位置。
模块浏览类类似模块导航特性。但是除此之外,模块浏览还有其他作用。用模块浏览既可点击VCL标识符,也可点击自己的标识符。下面举例子说明。
1)创建一个新应用程序,在其窗体上放置一个Button组件和一个Memo组件。
2)从主菜单上选择【Project | Options】。点击“Project Options”对话框中的“Directories/Conditionals”标签。在“Search Path”字段中输入以下内容:
1
|
$(DELPHI)\Source\Vcl;$(DELPHI)\Source\Rtl\Win |
点击OK关闭“Project Options”对话框。
3)双击窗体上的Button1按钮,为其添加OnClick事件处理程序如下:
TMemo的Clear方法清除Memo内容,大家是不是很想知道Clear方法的VCL源代码是啥摸样?请继续往下看。
4)按住键盘上Ctrl键,并点击Clear。如下图:
5)稍等片刻后,Code Editor显示出VCL stdCtrls单元,光标停在TCustomEdit.Clear方法上(这个Clear方法定义在TCustomEdit类中,该类是TMemo的祖先类之一)。Clear方法就是下面的这个样子:
是不是很有趣?只有一行代码。但SetWindowText来自何方呢?请继续看下一步。
6)按住Ctrl键,点击SetWindowText。
几秒钟后,Windows单元被打开,光标在下面的行上,如下图:
上面划着红线的一行告诉我们,SetWindowText是一个Windows函数,它包含在USER32动态链接库中。
7)请看Code Editor窗口的右上角有back和next两个浏览按钮。点击back按钮,Code Editor切换到前一个浏览点(StdCtrls中的Clear方法)。
8)点击next按钮,Code Editor显示SetWindowText在Windows单元入口。
9)点击紧靠Back按钮的下拉箭头,浏览器记载表中会出现源代码单元。点击其中一个单元可将Code Editor切换到这个单元。
模块浏览器是一个强有力的工具,不仅能导航用户自己的代码,还能导航VCL源代码及用户安装的第三方组件库的源代码。记住:通过阅读VCL源代码可学到很多东西,不要害怕浏览源代码。
8、Using Bookmarks(使用书签)
可在代码中设置书签来临时标记在源代码中的位置。例如,经常要临时离开正工作着的一段代码去查看以前编写的代码或从另一个位置复制代码;在当前代码位置设上一个书签,然后离开去做其他事情,只需一次点击就能回到这个代码段。同一时间最多可设置10个书签。
要离开某个位置设置书签,按【Ctrl + Shift + 书签号】。例如,要设置0号书签(第一个书签),把编辑器光标移到要做标记的位置,按下【Ctrl + Shift + 0】或【Ctrl + K + 0】。设置好书签后,Code Editor的沟槽中会显示一个图标来指示书签所在行,该图标显示书签号。如下图:
要回到书签处,按【Ctrl + 书签号】就可以了,例如【Ctrl + 1】返回到1号书签处。也可以在Code Editor的右键菜单中设置书签和返回书签。要清除一个书签,可将编辑器光标定位到书签所在行,再次按下【Ctrl + Shift + 书签号】就可以清除。
Note
可以为Code Editor中打开的每个文件设置书签。例如,可以在一个源代码中设置1#书签,在另一个源文件中也设置1#书签。这意味着书签不能跨源文件查找。如果在Unit1.pas中设置1#书签,则在Unit2.pas中按【Ctrl + 1】是不能返回到Unit1.pas中1#书签所在位置。
书签都是临时性的,当关闭源文件并重新打开时,原来设置的书签就不存在了。还要注意,设置和删除书签必须用主键盘上的数字键,数字小键盘上的数字键不起作用。
9、Incremental Search(增量查找)
可使用增量查找选项来快速查找短字符序列。从主菜单【Search | Incremental Search】菜单项或者按【Ctrl + E】来启动增量查找。要理解增量查找如何工作,最好的方式还是做一个练习,请按下面的步骤操作:
1)用“Object Repository”创建一个新文本文件;
2)输入以下正文:
1
2
3
4
|
Learning to write Windows Programs a bit at a time is not so bad. Isn't it time you go back to work? |
3)移动光标到该文件头【Ctrl + Home】;
4)按【Ctrl + E】启动增量查找,要查找“back”。注意此时Code Editor状态栏显示“Searching for:”;
5)从键盘输入一个b。字bit中的字母b被加亮显示,但这不是要查找的。
6)从键盘输入一个a。这次加亮显示的是bad中的ba,仍不是要查找的。
7)从键盘输入一个c。字back中的bac加亮显示,
此时键入k,Code Editor状态栏显示“Searching for:back”,且back被加亮显示。这样就找到了要查找的内容。
8)按键盘上的【Esc】键,停止增量搜索。
这就是与此有关的全部内容。当要查找的正文比较短时,使用增量查找是很方便的。
Tip
在执行增量查找期间,若输入了错误的字符,可用Backspace键将错误输入到查找串中的字符删除。
10、Finding Matching Brackets and Parentheses(查找配对方括号和圆括号)
Code Editor还有一个特性,它可帮助用户查找与当前光标所指的方括号或圆括号想配对的方括号或圆括号。要查找配对方括号,可将光标移至一方括号处,按下键盘上的【Alt + [】,光标就会跳动到与这个方括号想配对的方括号处。
再按下【Alt + [】又会跳回到开始位置。查找圆括号与方括号使用相同的击键。有时可能迷失在圆括号和方括号的迷宫里,但现在应该能找到走出迷宫的路了。