如何使用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應用程式專案:

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

接著我在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在它的libcf目錄下提供了Borland.NET Compact架框的assemblies,而.NET Compact架框本身的assemblies則可以在VS.NET 2003Windows CE目錄下找到,當然您也可以去MS網站下載.NET Compact架框的開發人員版本,例如下圖是筆者機器中VS.NET 2003Windows CE目錄,它位於筆者的D:Program FilesMicrosoft Visual Studio .NET 2003CompactFrameworkSDKv1.0.5000Windows CE之中。

 

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

dccil -DCF PDCFDemo1.dpr -U"D:Program FilesBorlandBDS4.0libcf" -lu"D:Program FilesMicrosoft Visual Studio .NET 2003CompactFrameworkSDKv1.0.5000Windows CESystem.dll";"D:Program FilesMicrosoft Visual Studio .NET 2003CompactFrameworkSDKv1.0.5000Windows CESystem.Windows.Forms.dll"

 

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

 

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

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

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

 

 

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

 

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

[STAThread]

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

 

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

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

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

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

 

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

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

 

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

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

 

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

由於筆者安裝的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中執行的畫面,因此無法把最後執行的畫面顯示出來,在此向各位抱歉(拍攝的很不清楚)。

 

  1. #1 by Rain_咖啡 on 2005 年 12 月 22 日 - 07:37:37

    虽然不做mobile的工作,但看到有新文章了还是要捧场滴。。。看后还是很好奇您想要在掌机中开发什么样的“好玩的东西”。

  2. #2 by 多尔衮 on 2005 年 12 月 22 日 - 07:47:29

    暂时用它开发,界面方面不好掌握。等新的版本出来再看看。

  3. #3 by William on 2005 年 12 月 23 日 - 01:31:52

    ActiveSync Remote Display :)http://www.microsoft.com/downloads/details.aspx?FamilyID=74473fd6-1dcc-47aa-ab28-6a2b006edfe9&displaylang=en

  4. #4 by A.L.™ on 2005 年 12 月 23 日 - 02:10:41

    在BDN上看到过这个演示不过偶不用Delphi来做Mobile的开发

  5. #5 by bjzhq on 2005 年 12 月 26 日 - 13:33:03

    今天试着登录大师的Blog,看到大师还在Borland非常高兴! :)Delphi2006非常的稳定, 花一天的时间测试了一下发现以下问题, 请大师反馈一下(Delphi2006ForWin32):1. 成批安装构件后(含运行期), remove 运行期构件时, 出现 stack over, bds关闭(大约有20个,含运行期)2.code insigt 如果窗口设置为允许的最大时, 窗口有时超出屏幕, 尤其超出屏幕左边时, 就会看不到内容3.在Default Layout下, 窗体设计设置为非内嵌式时, F12不能在code/designer切换, DataModuel 可以, 但向DataModuel放cds时, DataModul自动隐藏了4.Default Layout下, 窗体设计设置为非内嵌式时, 有时不能选择控件, 控件面板变为code下的选择项目, 只能勾选 ToolPalette\Always Show Designer Items 选项.不过,下列方法可以,但每次都这样,比较麻烦: 解决方法: 点击 Form, 点击 ToolPalette, 再点击 Form, 点击 ToolPalette, OK. 只要切换到Code, 需要重复操作 注: 点击ToolPalette的ScroolBar没用, 必须点项目 如果 Default Layout 下的IDE能解决上bug, 就非常的更喜欢了.5.在code/Designer切换时(F12), 切换有点慢6. dbxmss30.dll, 有一个非常严重的bug, 就是更改数据时,有时不能正确解析字段的类型,导致更新数据时,产生类型转换错误. 测试方法如下: . 通过 cds.ApplyUpdates(0)(注:与dsp相连)更新已有数据时, 不能正确解析参数的数据类型, 如: exec sp_executesql N’update "folio" set "credit" = @P1, "debit" = @P2 where "foliono" = @P3 ‘, N’@P1 varchar(3),@P2 varchar(3),@P3 int’, ‘136’, ‘136’, 1257 credit/debit实际为money类型, @P3解析正确. Delphi7下的MSSQL驱动没问题.现在只能是,用Delphi2006+Delphi7下的MSSQL DBX驱动. 不过, dbxmss30.dll 执行性能比D7下的好, dbxmss30.dll能显示错误信息了.Delphi2006非常的好了, 再测试一下, 如果没有大的问题, 公司的产品全部都移过来.比较喜欢Delphi2006下together/utest, D2006.net下的ECO, 非常希望看到大师的作品

  6. #6 by on 2005 年 12 月 27 日 - 05:37:24

    Hi bjzhq : 謝謝你寫了這麼多, 如果我有空的話會先試試, 確定之後再報到RAID中, 你也可以利用Delphi 2006的Quality Central報Delphi 2006的問題給Delphi Q&A Team

  7. #7 by bjzhq on 2005 年 12 月 27 日 - 08:34:05

    我只报了第三点和第六点, 但由于英语太差, 不知道表达的是否清楚, 老外能否看得懂, 还请大师落实一下. 下午向老板汇报了一下, 老板说升级如果没问题, 就买. 😦

  8. #8 by on 2005 年 12 月 28 日 - 14:07:54

    >1. 成批安装构件后(含运行期), remove 运行期构件时, 出现 stack over, bds关闭(大约有20个,含运行期)這個不太懂>3.在Default Layout下, 窗体设计设置为非内嵌式时, F12不能在code/designer切换, DataModuel 可以, 但向DataModuel放cds时, DataModul自动隐藏了我沒有問題, F12可以切换, DataModule也沒有問題啊

  9. #9 by bjzhq on 2005 年 12 月 28 日 - 14:52:49

    1.成批安装构件: 我是把DevExpress的所有构件都编译输出到一个LibD10目录下, 通过D2006W32的Install Components中的Add按钮, 选择刚编辑过的所有的bpl,一次增加的, 其中包含运行期(run-time)中的bpl, (我看了一下有90个bpl, 远远超过20个), 不停的提示有运行期的bpl, 一一按OK后, 还没有问题, 但当 remove 不能按装的bpl时, 报 stack over 错误, 然后 bds.exe 关闭. 重新启动后, 我是一次一个的安装, 没有问题.这是到目前为止, bds.exe 异常关闭的一次2.首先选择Default Layout,然后, 去掉下面的选框: Tools\Options\VCL Designer\Embedded Designer, 按提示, 关闭bds 并重启, 此时, 设计中的Form 会undocked(象D7一样,单独一个窗口), 此时按 F12, Form并不隐藏(hide), 仍停留在code editor上面, 但Focus已经在code editor 中, 此时, 要么把Form移开, 要么把Form最小化, 但F12可以在code editor 中转换到Form, 反之不行. 在模式下, DataModuel 可以通过F12转换, 但向DataModuel放cds时, DataModul自动隐藏了 选择 Classic Undocked时, 没有上述问题

  10. #10 by bjzhq on 2005 年 12 月 28 日 - 15:00:19

    大师这么晚还没有休息, 注意身体啊

  11. #11 by bjzhq on 2005 年 12 月 29 日 - 01:32:26

    .code editor bug: 如下句: Msg:= ‘Are you sure?’ + ‘Confirmation’; 当选择第三个 ‘ 时, 匹配不对, 不应与第二个 ‘ 匹配, 应与第四个 ‘ 匹配

  12. #12 by on 2005 年 12 月 29 日 - 09:31:50

    2.首先选择Default Layout,然后, 去掉下面的选框:Tools\Options\VCL Designer\Embedded Designer, 按提示, 关闭bds 并重启, 此时, 设计中的Form 会undocked(象D7一样,单独一个窗口), 此时按 F12, Form并不隐藏(hide), 仍停留在code editor上面, 但Focus已经在code editor 中, 此时, 要么把Form移开, 要么把Form最小化, 但F12可以在code editor 中转换到Form, 反之不行.在模式下, DataModuel 可以通过F12转换, 但向DataModuel放cds时, DataModul自动隐藏了选择 Classic Undocked时, 没有上述问题我都沒有問題.

  13. #13 by bjzhq on 2005 年 12 月 29 日 - 10:22:43

    怪了, 我测试了三台机器都有此情况.测试版本为:Borland® Delphi® for Microsoft® Windows™ Version 10.0.2166.28377 Update 1 Copyright © 2005 Borland® Software Corporation. All Rights Reserved.

  14. #14 by on 2005 年 12 月 31 日 - 12:15:19

    我已經reproduce第2和第6, 我也已經報上去了, 希望能在稍後推出的Patch 2都修正

  15. #15 by on 2007 年 08 月 24 日 - 04:34:16

     永远跟随大师的脚步!
    ada爱 Delphi.我是李维的粉丝,哈哈!!

  16. #16 by Unknown on 2008 年 03 月 22 日 - 18:20:45

    wow gold wow gold wow gold wow gold wow gold wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow power leveling wow gold wow gold Rolex Rolex Replica Replica Rolex replica watch replica watches rolex watch rolex Replica Rolex Rolex Replica rolex changyongkuivip

  17. #17 by Unknown on 2008 年 06 月 24 日 - 12:46:38

    wow gold!All wow gold US Server 24.99$/1000G on sell! Cheap wow gold,wow gold -230705093428647

  18. #18 by Unknown on 2008 年 08 月 04 日 - 05:38:59

    Welcome to enter (wow gold) and (wow power leveling) trading site, (Rolex) are cheap, (World of Warcraft gold) credibility Very good! Quickly into the next single! Key words directly to the website click on transactions! -14412216054120

  19. #19 by Unknown on 2008 年 09 月 28 日 - 14:36:32

    Hi,Do you need advertising displays, digital signages, ad players, advertisement player and LCD advertisings? Please go Here:www.amberdigital.com.hk(Amberdigital).we have explored and developed the international market with professionalism. We have built a widespread marketing network, and set up a capable management team dedicated to provide beyond-expectation services to our customers.
    amberdigital Contact Us
    website:www.amberdigital.com.hk
    alibaba:amberdigital.en.alibaba.com[fijdgejjcijj]

  20. #20 by Unknown on 2008 年 10 月 20 日 - 09:45:02

    浮気調査,花粉症.
    浮気調査,花粉症.

  21. #21 by Unknown on 2008 年 10 月 20 日 - 09:45:18

    人材派遣,
    フロント 仕事,,
     不動産 東京,
    不動産投資,   
    営業代行,
    グループウェア。

  22. #22 by Unknown on 2008 年 10 月 20 日 - 09:45:50

    ショッピング枠 現金化,ブライダル,或いはカラーコンタクト,フランチャイズ,フランチャイズ

  23. #23 by Unknown on 2008 年 10 月 20 日 - 09:46:15

    ショッピング枠 現金化,ブライダル,或いはカラーコンタクト,フランチャイズ,フランチャイズ

  24. #24 by Unknown on 2008 年 10 月 20 日 - 09:46:21

    マンガ 専門学校,アスクル,営業支援,見て見てフレッツ光,オーガニック, ペアリング,クサダイレクト

  25. #25 by Unknown on 2008 年 10 月 20 日 - 09:46:51

    水 通販,リバイタラッシュ,チューリッヒ,toefl ,韓国ツアー,二子玉川

  26. #26 by Unknown on 2008 年 10 月 20 日 - 09:47:06

    浮気調査,花粉症.浮気調査,花粉症.

  27. #27 by Unknown on 2008 年 10 月 20 日 - 09:47:15

    水 通販,リバイタラッシュ,チューリッヒ,toefl ,韓国ツアー,二子玉川

  28. #30 by Unknown on 2009 年 09 月 01 日 - 03:20:17

    http://www.ec本舗.com/http://www.しょっぴんぐ.net/http://www.ammsvces.com/http://www.ec14.net/http://www.ec15.net/http://www.ec16.net/http://www.ec17.net/http://www.ec18.info/http://www.ec19.net/http://www.pakistanipages.com/http://www.projectfinster.com/http://www.londonhotelguide.biz/http://www.ec12.biz/http://www.ec10.biz/http://www.ycmcu.com/http://www.wwcpr.net/http://www.vintage-car.net/http://www.wassa.net/http://www.tariwestfall.com/http://www.siamathome.com/http://www.sarahcosmi.com/http://www.royalbasenjis.com/http://www.rosefeeling.com/http://www.rdjrhawks.com/http://www.qmsfj.com/http://www.pokeusa.com/http://www.bjqyyc.com/http://www.bookaneditor.com/http://www.brittanyboxes.com/http://www.cn-women.com/http://www.dcsega.com/http://www.diosesmomic.com/http://www.domainforeveryone.com/http://www.dubaisaa.com/http://www.ec11.net/http://www.ec13.net/http://www.ec-gz.com/http://www.falloutfantasy.com/http://www.ferien-im-allgaeu.com/http://www.gmk-nova.com/http://www.greatbendfire.com/http://www.hydesite.com/http://www.ibad-tenerife.com/http://www.jainbhavan.com/http://www.jiyouchina.com/http://www.kanghua-cn.comhttp://www.komikmania.com/http://www.lulustntreats.com/http://www.myevilminion.com/http://www.ne-nf.net/http://www.nyurun.com/http://www.gavirol-holdings.com/http://www.greenkeepers.biz/http://www.hoodrivercpdj.com/http://www.inmobiliariavistasur.com/http://www.ipsarizona.com/http://www.jassom.com/http://www.jubunnaai.com/http://www.kirschnercameron.com/http://www.lascalatralee.com/http://www.lenarra.com/http://www.lg5350.com/http://www.mega-avs.com/http://www.mtjz.net/http://www.n01n.com/http://www.ankaradabursa.com/http://www.mz-7.com/

  29. #31 by Unknown on 2009 年 09 月 01 日 - 03:20:24

    http://www.商談.com/http://www.b002.net/http://www.b003.net/http://www.bannerbum.com/http://www.bb01.net/http://www.bennoweb.com/http://www.biblememorypower.com/http://www.bordych.com/http://www.bufalocare.com/http://www.capiloderm.com/http://www.carspeedy.com/http://www.celltheband.com/http://www.ad-assoc.com/http://www.chtiforce.com/http://www.hessleholm.com/http://www.ergoconsoles.com/http://www.ec9.biz/http://www.ec7.biz/http://www.ec6.biz/http://www.ec5.biz/http://www.ec07.net/http://www.ec06.com/http://www.ec05.net/http://www.ec04.info/http://www.ec03.com/http://www.ec02.com/http://www.ec01.info/http://www.ec01.biz/http://www.ebookbizopp.com/http://www.djgokou.com/http://www.dictascriptinc.com/http://www.dac-mos.com/http://www.cinnamonhillhoney.com/http://www.irregulartime.com/http://www.halapozitifiz.biz/http://www.zjsquare.com/http://www.zieglersrvpark.com/http://www.yjorchid.com/http://www.why-i-love-ebay.com/http://www.webmaster-india.comhttp://www.tcc-diversity.com/http://www.stichtingbam.com/http://www.shunhedown.com/http://www.sepidehanjomrooz.com/http://www.quality-lodges.com/http://www.potsdamiga.com/http://www.planete-rh.com/http://www.padayatraamerica.com/http://www.ocanerashallots.com/http://www.mobileolson.com/http://www.lovekeliye.com/http://www.lecompas.com/http://www.kompanimusic.com/http://www.petepower.com/http://www.pmoeurope.com/http://www.rev2corp.com/http://www.robotboympls.com/http://www.rudysrealdeal.com/http://www.samecca.com/http://www.sdp5.com/http://www.sjostjarnansridlager.com/http://www.spearheadent.com/http://www.tiavldn.com/http://www.underpaisa.com/http://www.wheatswne.com/http://www.ankaradabursa.com/

回覆給多尔衮 取消回覆