《Mastering Delphi 6學習筆記》之二 (轉)

worldblog發表於2007-12-09
《Mastering Delphi 6學習筆記》之二 (轉)[@more@] 

《Mastering 6學習筆記》之二

 :namespace prefix = o ns = "urn:schemas--com::office" />

本文是我在閱讀《Mastering Delphi 6》一書過程中的一些心得筆記,一方面因為原書是英文版,所以將一些我認為比較重要的部分整理和摘錄出來,記以備忘;另一方面也希望和大家一起分享《Master Delphi 6》這本好書和Delphi 6這一優秀工具。第一部分《 TreeView簡要說明》已經貼出,從這一部分開始就按照順序編號。因為是隨手記錄,所以不連貫和不周到的地方在所難免,歡迎大家批評指教。

本文不對概念和步驟詳細說明,所以並不適合Delphi初學者。希望對Delphi有一定是用的朋友能夠從本文受益。

 

關於Code Editor中的Diagram檢視

 

1.和Object TreeView類似,Code Editor中的Diagram檢視也是從Data Module中的類似概念發展而來的,現在也從Data Module中分離出來,從而可以應用於所有的窗體。

 

2.Diagram檢視不會自動顯示任何構件。要顯示某些構件,從Object TreeView中拖動你需要的構件到Diagram檢視中的白色區域即可(你可以從Object TreeView中一次拖動多個構件)。Diagram檢視將會自動顯示構件之間的所屬關係。例如,將Form和其上的構件拖動到Diagram檢視中,那麼檢視中所有構件上都會出現指向Form的箭頭,表明所有構件都為Form所擁有。

 

3.可以用Diagram檢視中的property connector來自動設定構件之間的一些關聯。例如,新增一個TEdit和一個TLabel,並用Diagram檢視中工具欄上的property connector按鈕來新增一個從TLabel指向TEdit的箭頭,你將會發現該箭頭上自動出現Focuntrol的字樣,同時在Object Inspector中,Label的FocusControl被自動設定成了Edit1。這一切之所以能夠自動完成,是因為TLabel所有屬性中唯一一個能夠指向TEdit的就是FocusControl屬性。這樣,你就可以形象化地設計物件之間的關聯。反過來,你不能將property connector從Edit指向Label,因為沒有對應的屬性可以完成這種關聯;如果你試圖這樣做的話,你會得到一個錯誤提示,並詢問你的意圖是否為想要一個相反方向的關聯。

 

對於資料集構件,你還能夠設定它們之間的Master/Detail關係和Lookup關係,其方法和上述步驟非常類似。

 

你還可以插入註釋塊(comment block),從而更明確的表達你的意圖。

 

4.Diagram檢視可以進行修飾,從而更美觀和明確。對於檢視中每一個構件或者關聯,都可以透過快捷選單來設定它們的顏色和Z-Order順序;對於關聯箭頭,你還可以任意修改它的形狀和指向,增加拐點等。

 

5.對同一單元可以使用多個Diagram。只要在Name文字框中輸入它的名字,並且新增可選的描述資訊即可。透過Diagram檢視中工具欄上的組合框,可以在各個Diagram之間切換。你可以為構件之間的Contains關係和資料表之間的關係分別建立Diagram,這樣會更加清晰。

 

6.建立好一個滿意的Diagram之後即可進行列印。只要讓焦點保持在Diagram檢視中,然後選擇 File | Print 即可。

 

7.在Delphi 5中,Diagram資訊是報存在單獨的.DTI(design-time Information)中,該的格式和.INI檔案的格式很類似,可以用文字編輯器進行編輯。在Delphi 6中,Diagram資訊則是儲存在.DDP(Delphi Diagram Portfolio)檔案中。這種檔案格式類似於.DFM的二進位制格式,不能夠直接編輯。不過,Delphi 6仍然能夠讀取.DTI檔案。

 

 

關於VCL和CLX

Delphi 6 目前包括兩個基本庫,其中VCL是從Delphi誕生之日起就一直在使用的,而CLX(Component Library for Cross-Platform)則是支援跨平臺特性的新的構件庫。你可以從File | New選擇使用的專案型別,可以為Normal Application或者CLX Application。你會發現用VCL和CLX編寫同樣的應用,在產生的可檔案大小方面會有一點小的差別。

當你選擇VCL Application或者CLX Application的時候,構件皮膚也會發生相應的變化,只顯示當前使用的庫所支援的構件型別。這種變化不算大,你要比較細心才能夠發現。在CLX Application中,構件皮膚中的頁面消失了,取而代之的是Common Controls,其中還包括幾個Win32中沒有的新構件。同時,其他頁面也有一些小的變化。對於來說,很少會注意到這些細節,但是這對於Delphi開發組來說是一個極大的挑戰,因為的許多地方都需要重構以適應新的庫。應該說在這一點上Delphi開發組做的相當出色,Delphi從前版本的使用者可以毫無困難的使用Delphi 6。不過你應該知道,在類似的介面之下,底層的改變是相當巨大的—這對於特定的程式設計師,例如編寫 Tools的人員和其他一些有特定需要的人來講,是必須要了解的內容。

 

其他的一些變化

Delphi 現在新增了一個Window選單,從而可以方便的在FoDesigner,Code Editor和Object TreeView/Object Inspector之間切換。這是一個很小但非常體貼使用者的改進,因為在開發環境中,經常發生某個視窗被其他視窗覆蓋而找不到的事情。

(《Mastering Delphi 6》中提到,可以透過登錄檔中的SoftwareBorlandDelphi6.0Main Window表項來設定該選單的顯示或者隱藏,其中-1代表True,而0代表False。不過在我的登錄檔中沒有找到這個設定,不知道如何新增。如果你發現了的話,歡迎你告訴我。)

 

構件皮膚的快捷選單中現在新增了一個子選單,其中包含了所有的皮膚名稱。你可以用它來切換到某個皮膚中。如果你經常不得不在皮膚中來回滾動以找到某個頁面,你一定會非常欣賞這個新功能的。

(在預設情況下,這個快捷選單中皮膚專案是按照字母順序排列的。你可能會希望它按照在構件皮膚中同樣的順序來排列。《Mastering Delphi6》中提到,可以設定登錄檔中的相應專案來修改這一行為。因為這一段說的表項不太明確,由於時間關係我也沒有進行試驗,所以就把原文放在這裡好了,大家感興趣的話可以試試看。

The order of the entries in the Tabs submenu of the Component Palette local menu can be set in the same order as the palette itself, and not sorted alphabetically. This is accomplished by setting to “0” (false) the value of the Sort Palette Tabs Menu key of the Main Window registry section of Delphi (under Software Borland Delphi 6.0 for the current user).

 

其他還有一些細小的改動:

1.在Environment Options對話方塊中的Preference頁面中新增一個選項Auto Drag Docking,允許你禁止各個工具的泊位特性。如果你不喜歡Docking的話,你可以設定這一選項。(說實在的,我不知道《Mastering Delphi6》的作者為什麼特別強調這個設定;我自己是非常喜歡Docking的,我總是把Object Inspector和Object TreeView組合在一起,將Watch視窗Dock進入Code Editor中,這樣實在是方便不少。不過既然作者這麼說,想必又他的理由,所以我還是尊重作者的意見,將這一點列為頭條。)

 

2.在Environment Options對話方塊中新增一個Enviroment variables頁面,允許設定系統環境變數。這樣比硬編碼某些路徑來說好得多了,特別是編寫應用的程式設計師可能會需要它。

 

3.新的Inte頁面可以設定將哪些字尾名的檔案視為Internet files,並且允許Scripts等。

 

 

關於To-do List

除了可以在View | To-do List中視覺化編輯之外,也可以在原始檔中這樣編輯:

procedure TForm1.FormCreate(Sender:TObject);

begin

//TODO -oMarco:Add creation code

end ;

這樣將增加一個名為Add Creation code的專案,其Owner為Macro。如果你熟悉了這種方式的話,編輯起來會比用To-do List Editor更快捷(當然,管理To-do List還是要用Editor)。-o指定Owner,-c指定Category,單獨的一個數字指定priority。例如:

  // TODO 2 –oMacro : Mouse Pressed

如果一個To-do List已經完成,可以將TODO改成DONE來指明這一點。或者在To-do List Editor中選定Done檢查框也可以。指定為DONE的專案在To-do List中將顯示為帶刪除線的形式。

你可以在to-do List Editor中將To-do List複製為純文字或者HTML格式來進行輸出,甚至可以指定HTML的輸出格式(不過有點奇怪的是,Delphi只提供了Copy to Clipboard的方式,卻沒有提供Export to File的功能。)

 

程式碼編輯器是多頁面形式(Multi-Page Interface)的,不過在Delphi 6中,這些頁面還可以透過滑鼠拖動來改變排列它們在程式碼編輯器中的順序。也可以透過Ctrl+Tab或者Shift+Ctrl+Tab在各個頁面之間切換。在頁面的快捷選單中同樣列出了編輯其中的所有頁面,當編輯其中開啟的檔案相當多時,可以透過這一功能快速切換到特定的檔案(一個小而很方便的功能,和構件皮膚塊接選單中的Pages選單一樣非常有用。)

 

在Environment Options對話方塊中的AutoSave是一個很有用的選項,它可以在你執行程式或者除錯程式之前,儲存原始檔,專案檔案或者桌面設定,從而避免除錯過程中的意外崩潰導致資料丟失。(強烈建議至少選中Auto Save Editor Files;我很奇怪這為什麼沒有成為預設設定。)

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990345/,如需轉載,請註明出處,否則將追究法律責任。

相關文章