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