Delphi Code Editor有幾個(gè)特性在編寫大規(guī)模代碼時(shí)非常有用。下面分別進(jìn)行介紹:
1、Code Templates(代碼模板)
使用代碼模板可把任意預(yù)定義代碼(或正文)插入到單元文件中。當(dāng)在Code Editor中編輯代碼時(shí),按下鍵盤的【Ctrl + J】,就可使用代碼模板;此時(shí)會(huì)彈出一個(gè)列表框,其中列出了可供選擇的模板。從列表中選取一個(gè)模板,按下Enter鍵,與所選模板相對(duì)應(yīng)的正文就會(huì)被插入到單元文件中。如下圖:
可以通過(guò)“Environment Options”對(duì)話框的“Code Insight”頁(yè)面來(lái)增加新模板或編輯現(xiàn)有模板;當(dāng)然,也可以用文本編輯器打開(kāi)代碼模板文件,編輯其中的代碼模板。代碼模板文件為DELPHI32.DCI,位于Delphi安裝目錄下Bin目錄中。
可自由修改代碼模板。例如,可以這樣修改代表for語(yǔ)句的代碼模板:
for I := 0 to Pred(|) dobeginend;
注意上面的管道符(|)。代碼模板入中中的管道是一個(gè)位置標(biāo)識(shí)符,它決定正文插入代碼中光標(biāo)所在位置。
Tip
如果對(duì)代碼模板文件進(jìn)行了大修改,一定要對(duì)修改過(guò)的代碼模板文件進(jìn)行備份,以備以后使用。因?yàn)楫?dāng)更新或重新安裝Delphi時(shí),Delphi安裝程序會(huì)覆蓋掉修改過(guò)的DELPHI32.DCI文件。
代碼模板不僅僅只用于代碼。例如下面的代碼:
{****************************************************}{* Filename and Version *}{* Copyright(C) pchmonster 2012 *}{* All rights reserved. *}{****************************************************}這段注釋版權(quán)信息基本是不變化的,因此可將它做成一個(gè)模板,以便在新創(chuàng)建的單元中快速將此版權(quán)信息添加進(jìn)去?梢园讶粘>幊讨薪(jīng)常使用的正文做成代碼模板。
2、Code Parameters(代碼參數(shù))
Code Editor的代碼參數(shù)特性實(shí)現(xiàn)一個(gè)提示窗(Tooltip),給用戶提示VCL方法或API函數(shù)所需的參數(shù)信息。有好幾百個(gè)VCL方法和Windows API函數(shù),要記住每個(gè)函數(shù)的參數(shù)是十分困難的。當(dāng)用戶鍵入一個(gè)方法名時(shí),代碼參數(shù)特性為用戶顯示該方法的參數(shù),從而節(jié)省用戶的事件。比如說(shuō)調(diào)用SetBounds方法,當(dāng)鍵入左括號(hào)后,彈出提示窗,如下圖:
提示窗中列出了每個(gè)參數(shù),馬上要鍵入的參數(shù)以粗體顯示,鍵入一個(gè)參數(shù)后,其后的參數(shù)又以粗體顯示,直至輸入完所有參數(shù)。待鍵入所有參數(shù)后,代碼參數(shù)提示窗就會(huì)消失。可在“Environment Options”對(duì)話框的“Code Insight”頁(yè)面設(shè)置代碼參數(shù)選項(xiàng)。
3、Code Completion(代碼完成)
加入一個(gè)類變量名和點(diǎn)操作符(.),Code Editor就會(huì)顯示一個(gè)列表框,其中列出該類的所有屬性和方法。比如說(shuō),有一個(gè)Memo組件,鍵入:
Memo.
并稍停頓一下,就會(huì)彈出如下的列表框:
接下來(lái),可用兩種方法來(lái)選擇表中的項(xiàng)。
方法一、用鼠標(biāo)或鍵盤指定列表框中的一個(gè)屬性或方法,按Enter鍵,則指定的屬性和方法會(huì)被插入到代碼中。
方法二、鍵入要插入代碼中的屬性或方法的頭幾個(gè)字母,Delphi在列表框中查找與之匹配的屬性或方法,并加亮顯示最匹配輸入字母的項(xiàng),若這個(gè)項(xiàng)就是所要的屬性或方法,按下Enter鍵盤即可插入到代碼中。
若不想使用Code Completion列表框,按下鍵盤的ESC鍵,列表框就會(huì)消失。
Code Completion提供屬性和方法列表供用戶選擇,從而節(jié)省用戶事件,同時(shí)可以避免屬性名、方法名的拼寫錯(cuò)誤及大小寫錯(cuò)誤?梢赃x定所要的屬性或方法,按下Enter鍵,Delphi就會(huì)將它插入到代碼中。
4、Tooltip Symbol Insight(工具提示)
把鼠標(biāo)光標(biāo)移到源代碼中的任意標(biāo)識(shí)符上,就會(huì)彈出一個(gè)提示框,例如,在任意標(biāo)準(zhǔn)工程中接口段,將光標(biāo)定位到“TForm1 = Class(TForm)”上,會(huì)彈出如下的窗口:
這一行顯示了TForm類聲明,并告訴用戶TForm是在Forms.pas單元的704行聲明的。
該工具提示會(huì)告訴用戶有關(guān)程序中任一變量的信息,當(dāng)用戶忘記了一個(gè)變量的類型時(shí),使用這個(gè)功能會(huì)特別方便。
5、Class Completion(類完成)
在interface接口段中鍵入一方法或?qū)傩缘穆暶骱,并按下【Ctrl + Shift + C】,Delphi就會(huì)把必須的代碼加到implementation實(shí)現(xiàn)段中,從而完成這個(gè)類。下面通過(guò)簡(jiǎn)單的聯(lián)系來(lái)熟悉這個(gè)特性:
(1)啟動(dòng)一個(gè)空工程。
(2)切換到Code Editor中,找到interface接口段中的窗體類聲明。
(3)在該窗體類聲明中的public段中鍵入以下代碼:
(4)按下【Ctrl + Shift + C】組合鍵,Delphi自動(dòng)將Test和GetSomething方法的代碼添加到implementation段中了,并將光標(biāo)定位到第一個(gè)方法中。如下圖:
Class Completion適用于屬性聲明和方法。鍵入一個(gè)屬性聲明,按下【Ctrl + Shift + C】鍵,Delphi就會(huì)自動(dòng)完成該屬性的聲明。它還能為屬性添加一個(gè)write方法,F(xiàn)在理解這個(gè)write方法有點(diǎn)困難,在以后的講解中能編寫自己的組件后,就會(huì)明白的。
Class Completion特性在編寫組件時(shí),可節(jié)省許多時(shí)間,使用一段時(shí)間后,就會(huì)覺(jué)得再也離不開(kāi)它了。
6、Module Navigation(模塊導(dǎo)航)
它使用戶能夠從implementation段中一個(gè)方法快速移動(dòng)到interface段中該方法聲明處;反過(guò)來(lái)也可以。還是做個(gè)練習(xí)來(lái)說(shuō)明它把。
(1)找到上面的練習(xí),我們修改過(guò)窗體的類聲明,添加了GetSomething和Test方法過(guò)程;
(2)點(diǎn)擊包含Test過(guò)程的聲明的行;
(3)然后按下【Ctrl + Shift + 向下箭頭】組合鍵,Code Editor就會(huì)跳到implementation段中的Test過(guò)程代碼處;
(4)按下【Ctrl + Shift + 向上箭頭】組合鍵,Code Editor又會(huì)跳到interface段中Test過(guò)程的聲明處;
使用模塊導(dǎo)航,能方便的在implementation段和interface段之間快速移動(dòng)。
Tip
用上箭頭或下箭頭無(wú)關(guān)緊要,使用其中任一個(gè)按鈕都可在interface段和implementation段之間來(lái)回切換。
7、Module Browsing(模塊瀏覽)
模塊瀏覽是另一種模塊導(dǎo)航工具。在Code Editor中,按住【Ctrl】鍵,把鼠標(biāo)光標(biāo)置于一個(gè)標(biāo)識(shí)符名上,該標(biāo)識(shí)符就會(huì)以藍(lán)色加亮顯示并加上下劃線;點(diǎn)擊這個(gè)標(biāo)識(shí)符,Delphi會(huì)告之該標(biāo)識(shí)符聲明在源代碼中的位置。
模塊瀏覽類類似模塊導(dǎo)航特性。但是除此之外,模塊瀏覽還有其他作用。用模塊瀏覽既可點(diǎn)擊VCL標(biāo)識(shí)符,也可點(diǎn)擊自己的標(biāo)識(shí)符。下面舉例子說(shuō)明。
1)創(chuàng)建一個(gè)新應(yīng)用程序,在其窗體上放置一個(gè)Button組件和一個(gè)Memo組件。
2)從主菜單上選擇【Project | Options】。點(diǎn)擊“Project Options”對(duì)話框中的“Directories/Conditionals”標(biāo)簽。在“Search Path”字段中輸入以下內(nèi)容:
$(DELPHI)\Source\Vcl;$(DELPHI)\Source\Rtl\Win
點(diǎn)擊OK關(guān)閉“Project Options”對(duì)話框。
3)雙擊窗體上的Button1按鈕,為其添加OnClick事件處理程序如下:
TMemo的Clear方法清除Memo內(nèi)容,大家是不是很想知道Clear方法的VCL源代碼是啥摸樣?請(qǐng)繼續(xù)往下看。
4)按住鍵盤上Ctrl鍵,并點(diǎn)擊Clear。如下圖:
5)稍等片刻后,Code Editor顯示出VCL stdCtrls單元,光標(biāo)停在TCustomEdit.Clear方法上(這個(gè)Clear方法定義在TCustomEdit類中,該類是TMemo的祖先類之一)。Clear方法就是下面的這個(gè)樣子:
是不是很有趣?只有一行代碼。但SetWindowText來(lái)自何方呢?請(qǐng)繼續(xù)看下一步。
6)按住Ctrl鍵,點(diǎn)擊SetWindowText。
幾秒鐘后,Windows單元被打開(kāi),光標(biāo)在下面的行上,如下圖:
上面劃著紅線的一行告訴我們,SetWindowText是一個(gè)Windows函數(shù),它包含在USER32動(dòng)態(tài)鏈接庫(kù)中。
7)請(qǐng)看Code Editor窗口的右上角有back和next兩個(gè)瀏覽按鈕。點(diǎn)擊back按鈕,Code Editor切換到前一個(gè)瀏覽點(diǎn)(StdCtrls中的Clear方法)。
8)點(diǎn)擊next按鈕,Code Editor顯示SetWindowText在Windows單元入口。
9)點(diǎn)擊緊靠Back按鈕的下拉箭頭,瀏覽器記載表中會(huì)出現(xiàn)源代碼單元。點(diǎn)擊其中一個(gè)單元可將Code Editor切換到這個(gè)單元。
模塊瀏覽器是一個(gè)強(qiáng)有力的工具,不僅能導(dǎo)航用戶自己的代碼,還能導(dǎo)航VCL源代碼及用戶安裝的第三方組件庫(kù)的源代碼。記。和ㄟ^(guò)閱讀VCL源代碼可學(xué)到很多東西,不要害怕瀏覽源代碼。
8、Using Bookmarks(使用書簽)
可在代碼中設(shè)置書簽來(lái)臨時(shí)標(biāo)記在源代碼中的位置。例如,經(jīng)常要臨時(shí)離開(kāi)正工作著的一段代碼去查看以前編寫的代碼或從另一個(gè)位置復(fù)制代碼;在當(dāng)前代碼位置設(shè)上一個(gè)書簽,然后離開(kāi)去做其他事情,只需一次點(diǎn)擊就能回到這個(gè)代碼段。同一時(shí)間最多可設(shè)置10個(gè)書簽。
要離開(kāi)某個(gè)位置設(shè)置書簽,按【Ctrl + Shift + 書簽號(hào)】。例如,要設(shè)置0號(hào)書簽(第一個(gè)書簽),把編輯器光標(biāo)移到要做標(biāo)記的位置,按下【Ctrl + Shift + 0】或【Ctrl + K + 0】。設(shè)置好書簽后,Code Editor的溝槽中會(huì)顯示一個(gè)圖標(biāo)來(lái)指示書簽所在行,該圖標(biāo)顯示書簽號(hào)。如下圖:
要回到書簽處,按【Ctrl + 書簽號(hào)】就可以了,例如【Ctrl + 1】返回到1號(hào)書簽處。也可以在Code Editor的右鍵菜單中設(shè)置書簽和返回書簽。要清除一個(gè)書簽,可將編輯器光標(biāo)定位到書簽所在行,再次按下【Ctrl + Shift + 書簽號(hào)】就可以清除。
Note
可以為Code Editor中打開(kāi)的每個(gè)文件設(shè)置書簽。例如,可以在一個(gè)源代碼中設(shè)置1#書簽,在另一個(gè)源文件中也設(shè)置1#書簽。這意味著書簽不能跨源文件查找。如果在Unit1.pas中設(shè)置1#書簽,則在Unit2.pas中按【Ctrl + 1】是不能返回到Unit1.pas中1#書簽所在位置。
書簽都是臨時(shí)性的,當(dāng)關(guān)閉源文件并重新打開(kāi)時(shí),原來(lái)設(shè)置的書簽就不存在了。還要注意,設(shè)置和刪除書簽必須用主鍵盤上的數(shù)字鍵,數(shù)字小鍵盤上的數(shù)字鍵不起作用。
9、Incremental Search(增量查找)
可使用增量查找選項(xiàng)來(lái)快速查找短字符序列。從主菜單【Search | Incremental Search】菜單項(xiàng)或者按【Ctrl + E】來(lái)啟動(dòng)增量查找。要理解增量查找如何工作,最好的方式還是做一個(gè)練習(xí),請(qǐng)按下面的步驟操作:
1)用“Object Repository”創(chuàng)建一個(gè)新文本文件;
2)輸入以下正文:
Learning to write WindowsPrograms a bit at a timeis not so bad. Isn't ittime you go back to work?
3)移動(dòng)光標(biāo)到該文件頭【Ctrl + Home】;
4)按【Ctrl + E】啟動(dòng)增量查找,要查找“back”。注意此時(shí)Code Editor狀態(tài)欄顯示“Searching for:”;
5)從鍵盤輸入一個(gè)b。字bit中的字母b被加亮顯示,但這不是要查找的。
6)從鍵盤輸入一個(gè)a。這次加亮顯示的是bad中的ba,仍不是要查找的。
7)從鍵盤輸入一個(gè)c。字back中的bac加亮顯示,
此時(shí)鍵入k,Code Editor狀態(tài)欄顯示“Searching for:back”,且back被加亮顯示。這樣就找到了要查找的內(nèi)容。
8)按鍵盤上的【Esc】鍵,停止增量搜索。
這就是與此有關(guān)的全部?jī)?nèi)容。當(dāng)要查找的正文比較短時(shí),使用增量查找是很方便的。
Tip
在執(zhí)行增量查找期間,若輸入了錯(cuò)誤的字符,可用Backspace鍵將錯(cuò)誤輸入到查找串中的字符刪除。
10、Finding Matching Brackets and Parentheses(查找配對(duì)方括號(hào)和圓括號(hào))
Code Editor還有一個(gè)特性,它可幫助用戶查找與當(dāng)前光標(biāo)所指的方括號(hào)或圓括號(hào)想配對(duì)的方括號(hào)或圓括號(hào)。要查找配對(duì)方括號(hào),可將光標(biāo)移至一方括號(hào)處,按下鍵盤上的【Alt + [】,光標(biāo)就會(huì)跳動(dòng)到與這個(gè)方括號(hào)想配對(duì)的方括號(hào)處。
再按下【Alt + [】又會(huì)跳回到開(kāi)始位置。查找圓括號(hào)與方括號(hào)使用相同的擊鍵。有時(shí)可能迷失在圓括號(hào)和方括號(hào)的迷宮里,但現(xiàn)在應(yīng)該能找到走出迷宮的路了。