如何使用Delphi 2006學習.NET Compact架框的開發

12月初在上海發表Delphi 2006David I.展示了一個使用Delphi 2006開發Windows Mobile的範例,當時就有參加的朋友向我索取這個範例,但是經我向David要這個範例,David並沒有給我。恰巧前幾日我翻譯了David Clegg先生有關使用Delphi 2005開發.NET Compact Framework應用程式的文章,由於那篇文章中是討論如何使用Delphi 2005開發,而Delphi 2206開發.NET Compact Framework應用程式簡單多了,因此我心中想乾脆寫一篇如何使用Delphi 2006的文章好了,以便讓有興趣的朋友能夠開始使用Delphi 2006來嘗試.NET Compact Framework應用程式的開發。

 

Delphi 2006的編譯器已經包含了Delphi .NET Compact的預覽版編譯器,因此Delphi 2006的開發人員可以直接使用即可編譯。使用Delphi 2006編譯器開發.NET Compact架框應用程式的流程是:

 

1.      Delphi 2006中建立一個Windows forms應用程式專案

2.      到命令列視窗中使用編譯器指令把Windows forms應用程式專案編譯成.NET Compact架框應用程式

3.      由於Windows forms應用程式中有一些類別,特性和方法沒有實作在.NET Compact架框中,因此第2個步驟會產生編譯錯誤,開發人員可以回到Delphi IDE中使用注釋的方式移除.NET Compact架框不支援的類別,特性和方法

4.      再次使用Delphi 2006編譯修改過的專案即可成功產生.NET Compact架框的應用程式

5.      啟動Window CE模擬器執行步驟4產生的應用程式,如果有問題再回頭修改程式碼

6.      部署到真正的Win CE/Pocket PC或是SmartPhone執行您的.NET Compact架框的應用程式

 

在下面的內容中我們詳細的說明。

步驟 1 設定開發環境

在開始開發.NET Compact架框應用程式之前,您可能需要先設定好基本的開發環境,下載並且安裝開發.NET Compact架框需要的模擬器以及您的移動設備需要的.NET Compact架框執行環境。

 

首先您可以在下面的URL下載到WinCE 5.0的模擬器,您最好下載中文化的版本並且安裝到您的電腦之中。

http://www.microsoft.com/downloads/details.aspx?FamilyID=EEC33AE3-C129-4C25-ABAA-18E8E842178F&displaylang=en&Hash=LKRJXV6

 

接著您可以在下面的URL下載到您使用的Windows Mobile設備需要的.NET Compact Framework 1.0 SP3 Redistributable安裝程式:

http://www.microsoft.com/downloads/details.aspx?familyid=a5a02311-194b-4c00-b445-f92bec03032f&displaylang=en

下載並且執行上面的.NET Compact Framework 1.0 SP3 Redistributable安裝程式,它就可以藉由ActiveSync.NET Compact架框安裝到您的WinCE/Pocket PC/SmartPhone上,如此一來就可以執行.NET Compact架框的應用程式了。

步驟 2 建立Delphi.NET Windows Forms應用程式專案

由於目前Delphi 2006還沒有提供視覺化設計.NET Compact架框應用程式的功能,因此我們目前只能使用Windows Forms專案提供的視覺化設計能力,之後再使用Delphi編譯器轉換為.NET Compact架框應用程式。

 

因此請在Delphi 2006 IDE中先建立一個Windows Forms應用程式專案:

x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBd6RpQ8XwyirEw6R4GZ64ASjU_3Lu5ezdD8tr2frcsta2w76JGEaPScuf47PH9qHoeZps0T6Z-K6ZywQ2o5iRomuiFg4T9RElQP40Q20SFDXg

接著使用視覺化表單設計家設計.NET Compact架框應用程式的圖形使用者介面,例如在這個範例中我在表單中使用了一個TextEdit,一個Button以及一個Label控制項:

x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBeZseF0W5_kfwE8IdHJzYRiMFkBZHVZ68sjcsp5NkCEqNdR_JfpZ2s14v5wk7jiP67yCFI9O1sfUUY7fj4HZQu7hYw-oX0PWXMTJdJNP9sUBw

接著我在Button控制項的Click事件處理函式中撰寫如下的程式碼:

procedure wfmMain.btnClickMe_Click(sender: System.Object; e: System.EventArgs);

begin

  Self.tbMsg.Text := '這是由Delphi 2006開發的!';

end;

 

並且在表單的Activate事件處理函式中撰寫如下的程式碼:

procedure wfmMain.TWinForm13_Activated(sender: System.Object; e: System.EventArgs);

begin

  Self.lblVersion.Text := Environment.Version.ToString;

end;

 

TWinForm13_Activated事件處理函式會在Label控制項中顯示使用的.NET架框的版本資訊。

 好了,這只是是很簡單的.NET應用程式,接下來要討論的是如何把這個Windows Forms應用程式編譯成.NET Compact架框的應用程式。Delphi 2006的編譯器加入了一個新的編譯器指令:CF,這個編譯器指令可以把Delphi的專案編譯成.NET Compact架框的專案。

 

要編譯成.NET Compact架框的應用程式,我們需要使用Delphi 2006提供給.NET Compact架框的開發assemblies以及.NET Compact架框本身的assembliesDelphi 2006在它的lib/cf目錄下提供了Borland.NET Compact架框的assemblies,而.NET Compact架框本身的assemblies則可以在VS.NET 2003Windows CE目錄下找到,當然您也可以去MS網站下載.NET Compact架框的開發人員版本,例如下圖是筆者機器中VS.NET 2003Windows CE目錄,它位於筆者的D:/Program Files/Microsoft Visual Studio .NET 2003/CompactFrameworkSDK/v1.0.5000/Windows CE之中。

 x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBem8DCZYqZazs1JDxaib8rxLd6BvkrhN-1jn6VMsJp5ZpUUbG0Rkqvbo3IRF-AZL2Tx6Fq2k8hEbLPtcT2RuVsPHTM_eNtc7q9uZtgK-gu5Bw

有了上面的知識之後,我們就可以撰寫一個編譯的批次檔案如下:

dccil -DCF PDCFDemo1.dpr -U"D:/Program Files/Borland/BDS/4.0/lib/cf" -lu"D:/Program Files/Microsoft Visual Studio .NET 2003/CompactFrameworkSDK/v1.0.5000/Windows CE/System.dll";"D:/Program Files/Microsoft Visual Studio .NET 2003/CompactFrameworkSDK/v1.0.5000/Windows CE/System.Windows.Forms.dll"

 

讓我們把這個批次檔案儲存在範例專案的目錄中並且命名它為DCF.BAT

 

現在讓我們開啟一個命令列視窗,並且切換到我們前面的範例專案目錄之下,準備使用DCF.BAT來編譯範例專案。

步驟 3 使用Delphi 2006的編譯器編譯Windows Forms應用程式為.NET Compact架框應用程式

如下所示,在範例專案目錄中執行DCF.BAT編譯我們的範例專案PDCFDemo1.dpr:

 x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBcZDth11Ki5mibEM9gKk4as0VpHwE17Ytk0ggoBIwM5hIF1iAJletKJCAQ1cDyPTQYVNO3P4MeI5dMVBAcKi_19M4pejHBuCJy_rdT9XcbLOg

 

從上圖可以看到編譯器出現了許多的錯誤並且指出了在範例應用程式中那些行數產生了錯誤,我們可以看到這些錯誤大都是Name/TabIndex特性值的錯誤,這是因為.NET Compact架框沒有實作這兩個特性。至於SuspendLayoutAutoScaleBaseSize以及ResumeLayout方法則是沒有實作在.NET Compact架框中。因此我們只需要回到範例專案的主表單程式碼中把這些行的程式碼改成注釋即可。

 

首先讓我們開啟範例專案的主程式,把其中的

[STAThread]

這一行改成注釋,如下圖所示:

 x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBfYmAm7TShwVkT9c0IWHcGTIP_CFpdoC1fhJNBSYuBZVhhMjHGX9OllsOVla-ObQFtXBQxj_QOY5GvMLNS_hBUWehig9Stfo-HMxvw5rXIkTA

接著再回到範例主表單把命令列編譯器註明錯誤的行數程式碼改成注釋之後,再回到命令列視窗,再次執行DCF.BAT,我們就可以看到如下圖所示現在已經編譯成功了:

x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBfHvLGa_3rPsWP51tsHnDEGNRu5mruzSnMErvY4skr2n6CwKsgulxv-V_FvX0973xGUBpqONhEL8pAVwvAM7WlxORVC8y8RahHlfU5J-wvs_Q

步驟 4 使用WinCE 5.0模擬器測試範例應用程式

如果您安裝好了WinCE 5.0的模擬器,那麼現在請它,如下圖所示:

x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBeoTkpIGS2NQfyRXJY-S3SNbX4jehXZfRNc8QABxh86chn7jiT0ugYWzG7T7nIZ_KbWoHCFjZxBh0LcJW5gD356nKZdD6KzKmZC3eeKXsFFYw

現在我們需要把剛才範例專案的目錄模擬成儲存卡以便讓WinCE 5.0的模擬器可以找到我們的範例應用程式並且執行它。要如此做,請點選WinCE 5.0模擬器的Emulator|Folder Sharing…功能表,如下所示:

 x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBfl7N5nGcTfNepjlvZm-Cmivu4pZ8aulzlpPO8JdtKoZuH76AypDNGtoaEWampnFtdelhWnINgljCZIvnGs0Lk2yfJyo1Ju0NvKcfMKF8unWw

接著在下面的對話盒中選擇範例專案的目錄,在筆者的機器是C:/DCFDemos/Demo1,如下所示:

x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBeGtEUzJ89KNMzbKFW_FP6804qKxw9BXXtwj9mmQQMSB8ERamUlrHazDxlXqQbup3AMiSz754kCcj3VoNkjVSAuoN7C2RPiQr0SQiO0nQTZIA

接著執行WinCE 5.0模擬器的Windows Explorer,如下所示:

 x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBe46ph5SJ_RITbSWJV3b3bYVwrMv0jxnjgdN4OMM1GEaJVTvtjcKem1tj70zAZCE5oGj5RWJLCgdI51ptTUyHa7mimzapgdJJXs-ttMG-kl3A

Windows Explorer中瀏覽到儲存卡,如下所示:

x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBcGd8pIjDElQjKcgQgwgtbuzDQKScXKaUFMSjuXqNc6Ls_z9MZuXqWK31pfamgJvLynp-V8gG3glfv0_R9GRwTRgdodBPayQ2Ju6ESSj-lyPw

開啟了儲存卡目錄之後就可以看到剛才範例專案所有的內容,包含了我們的範例.NET Compact架框的應用程式:

 x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBcx-qngIcCADRa_IoMm_chAKyJQQ3iwHj3Os6pdZ5fmkKrtkh9ukpJ3IAVnE-31tf89SllqSFIOf3nXFNfodLi8FwaVMmjAehpWhViQysPhZw

現在點選它就可以在WinCE 5.0模擬器中看到由Delphi 2006開發的範例.NET Compact架框的應用程式的確可以成功的執行了:

x1pFUxp6NG29bXY4hHUvhWU938vgNEsQW76lC8_5YICKBd9aFydxe9OjLpWutLpfYVEe4TPqwIYMVTPQDIYCHBbp007OyQzs0ahdWjtS61E0i8j3ZBPiHZjb2PTykCXtot50C8Gz_00Ijo6rB4fAcr3_Q

由於筆者安裝的WinCE 5.0的模擬器是英文版,因此無法看到正確的中文。

步驟 5 拷貝Delphi.NET Compact架框應用程式到PocketPC執行

但是當筆者把Delphi 2006開發的範例.NET Compact架框的應用程式拷貝到筆者在2002年購買的Compaq iPAQ中執行時,一切都正常,中文也沒有問題,當筆者第一次在筆者的Compaq iPAQ中看到這個由Delphi 2006開發的範例.NET Compact架框應用程式執行時,心中真是高興,筆者心中知道又有很多好玩的東西可以寫了。

 

最後由於筆者的拍攝技術很爛,不知道如何拍攝範例.NET Compact架框應用程式在Compaq iPAQ中執行的畫面,因此無法把最後執行的畫面顯示出來,在此向各位抱歉(拍攝的很不清楚)。

 


x1phiCZJPhsUYg-Rf0H_plhOaYk7_MQeaqvwqVbDpt8LAvNa33J1J3cZr37mxlBxhMxLESUVr154f02MFwK7ibTEvbAniW-ig-0MEy6S4E7Ackx1phiCZJPhsUYg-Rf0H_plhOeW6ahxmXS34NVb7C6VBexRJA729ABLb9aEODlnLTyBRlyps_6AQnCWUI-JEzRuJ4jQ9LLIazhin6L1-wPFu7Rw
x1phiCZJPhsUYg-Rf0H_plhOUNqirOGSCxNJcYJ4TQnpcj-80dcx0LcicYnABkPYrtX5ZXW6WKBvnyT88-ZIq8ejMdOGJOmKS9diXqmQZ1JVyIx1phiCZJPhsUYg-Rf0H_plhORpL3pzEIvNNPooGrCWWQx9ZEQ_tUqHixm2w0kcGSCaOe5pRQnsYP-qUy0oNKn8uNC04eX-wm4G-O0BTJ2Nazl4
x1phiCZJPhsUYg-Rf0H_plhOa5QfOJTcAMih7YprQ4AcLu3Oo2vdLUJ5gjJJkq74C3lfqay1HOboutbJe5KqP7bNBbAVDrVI4CpULlQ1umxqq0x1phiCZJPhsUYg-Rf0H_plhOQUYu7nR6ajFfv7CKaNae9qMdeS2G7IL-R4RMLWiEup6K05DtslKDkF8jeO1bbopvX5y1PhvXXqTJSZYdHohFIk
x1phiCZJPhsUYg-Rf0H_plhOQDSvkv3UqbRK_izSlDYvRNSXh3oNjZZiLnjGb6VfhW2YbJX5eGL7rKc4In1GrNgX8h92gGKgIncbsDmxc88UREx1phiCZJPhsUYg-Rf0H_plhOQN-n1aTl-2m6EY8kOj-SiVCoSz2ERwYr1USrQBzeH6eACi7j_KRQdnWaDaHdIw_zz6MPkSzrdALKsMrn-XtN7E
x1phiCZJPhsUYg-Rf0H_plhOfyjtRawX8goUu8Fft1md9CWt0krYGmqX5IwROa42vdH8gT4r7KUZ689J2CNtsnU1601XuQqPcGTxl_vz_jjrvkx1phiCZJPhsUYg-Rf0H_plhObAhW2QIR5OHprdtRdZBRXQiTF8TN7cWbm68KlGwibp8SC45FZ-rBEC04wCAamKufjFjTDir5Ckdxi_2f8xhq8w
x1phiCZJPhsUYg-Rf0H_plhOSKvVmv-sotaLQ1n3n3pKXJUVDK6AX-WSb12yv16ABdiJ4AX7PF6_n0PwtGaVNnK9Lnuxnx6WeWlkkV30HjO8P4x1phiCZJPhsUYg-Rf0H_plhOctme2mgYbmRDV8BJiJLc5-pujFEBcX5rL7IIjI_CVMrdG1E7-hEOT8qRxNRzlpJyoQHNKqKzEM3-ewpEPpENLg
x1phiCZJPhsUYg-Rf0H_plhOQmP3NIojGHDOlp6-wYr_4JVKTz_67-aND63INItMULSFJW1AluKnJMqX1vpLVUeb5hI3wMb_2uVbJkoxJXoi7c
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章