2015/04/02

Delphi IntraWeb 會計系統程式設計

 

作者:吳祐賓

 

IntraWeb(以下簡稱IW)是Delphi裡繼WebSnap後另一個網站設計解決方案。
許多Delphier認為IW不是個一回事。

不過如果IW真的這麼糟,能從3.x發展到現在的XIV,直接說它不堪使用也未免太過武斷。

今天為了證明IW實用性而找了一個專案來嘗試看看。

就以陳惟彬老師的ASP.NET會計系統來體驗試作。


ASP.NET會計系統程式設計 2002 陳惟彬著

為什麼要使用這本書?


  • 這套系統是以ASP.NET 1.1 VB語言進行開發,有以下和IW共同的特色:
1.頁面設計採絕對定位,和Delphi VCL Form設計方式相同。
2.全面使用ASP.NET元件,剛好和IW元件形成對照組。

  • 考量Delphier的不良習慣,限縮設計的手段:
1.全程不使用任何已知的HTML, CSS, JavaScript。
2.付費可以省工,TMS for IntraWeb參戰。

專案開發環境:


  • Delphi XE
  • FireBird database 1.5 embedded (.Net framework not need!)
  • IntraWeb XIV 14.0.23
  • TMS IntraWeb Component Pack 5.4.1.1


整個專案所需要的檔案


IntraWeb 會計系統主畫面

新增子會科程式畫面

與 VCL Form 設計比較不同的地方是:

 

1.為了配合AJAX(Asynchronous JavaScript and XML),在IW元件中,或多或少都有提供OnAsync事件,而要使用OnAsync事件時,必須要注意搭配元件的刷新。
以「新增子會科程式」為例,當TIWDBAdvWebGrid允許Async Edit時,就必須在.OnAsyncEdit事件寫上TIWDBAsyncNavigator元件變更處理,否則便出現 Grid 在編輯狀態,但Navigator卻沒有變化的搞笑情形。


2.TIWDBGrid和TDBGrid很像,但編輯功能還需要綁定其它TIWDBxxx元件。


3.新增功能:
  A.TIWDBGrid:無此功能,必須另外設計新增畫面。
  B.TIWDBAdvWebGrid:有新增功能,非常接近TDBGrid體驗。


4.TIWDBAdvWebGrid內建就有和ASP.NET Grid相同的分頁功能,這是DBGrid沒有的功能。


開發心得:

 
在開發時間緊迫的情形下,最終還是放棄OnAsync事件的使用。
開發過程中全都使用Delphi程式,開發習慣並沒有因為是網站開發而有所改變。
IW元件功能和VCL元件相比,功能性相對較差,不足的地方還需要額外程式處理,一樣全面使用Delphi Code。
TDataSet存放在Web Server上,這先天的限制使 IW 註定不能承受太大量的使用者負載,但卻能做到很複雜的商業運算。當然也可以不使用TDataSet,這樣就不需使用DB Aware元件,就像不使用DBGrid而使用StringGrid一樣,但相對的,就必須在程式上多費點苦心。
畫面很陽春,和VCL一樣,沒有內建 OS Style 的 IW 畫面實在太復古。


結語:

 
系統本身雖尚未完成,但初期開發結果能充分使用TDataSet的功能,所以完成整套系統只是時間上的問題,不會有無法做完的情形,何時才能完成?等我空閒一點再說吧。 ^_^

7 則留言:

  1. 不錯哦,請問大大目前開發進度如何?IW的開發效率如何?

    回覆刪除
    回覆
    1. IW封裝和支援的程式遠比 UniGUI 和 Raudus 要來得好
      Chart 和 Report 都有 3RD 支援

      IW 開發上並不如後兩者來得好,後兩者明顯更貼近 VCL for Web 開發
      另一缺點是,ISAPI 的更新也是 Delphi 的痛點之一

      http://tools.hotzsoft.com/HZApp/PTL02U05?ID=Prd_WPC
      這套產品的設計方式真的很棒,Delphi的缺點都改進了!

      目前 IntraWeb 專案開發是停擺的狀態,所以有時間再接續囉

      刪除
  2. 請問你知道intraweb的apache application要怎麼佈署嗎?

    回覆刪除
    回覆
    1. 我重新試著做成isapi
      發現IW只有Ultimate有支援isapi

      詳情請見:
      Feature Matrix And Supported enviroments

      刪除
    2. 我使用Raudus開發資訊系統,相當好用,但是它似乎只支援.exe檔及apache的so檔,isapi不支援很殘念!!

      刪除