顯示具有 IntraWeb 標籤的文章。 顯示所有文章
顯示具有 IntraWeb 標籤的文章。 顯示所有文章

2017/03/27

為 Delphi 10.2 練手,IntraWeb 和 EasyUI 的結合實作

我一直以為 IW 只有 Application Mode 和 (Integrated) Page Mode。

在 IW14 版,新增了 Content Handlers 特色後,當時還不是很了解這功能可以帶來什麼好處。

但在看了【IntraWeb 之 EasyUI 篇】後,才恍然大悟,原來前端可以這麼簡單開發:


我再也不用為了改一個字而整個服務停機啦!


接下來,我也依樣畫葫蘆,做了一個簡單的展示:

後端及資料庫: Delphi 10.1 + IntraWeb 14.1.4 + Firebird 2.5
前端: EasyUI (JQuery components) 1.5.1


2017/03/23

DIY 修正 JSON.ToString 的處理

你在 JSON 的轉碼上也遇到問題了嗎?


在 Delphi 初期支援 JSON 版本,JSON相關類別有個【ToString】的函式,對於異質平台間的轉換需求上,替我們省下了不少時間。

But!人生最重要的就是這個 But!

2017/03/21

IntraWeb 未來也要支援 Linux 了!

IntraWeb 隨著 Delphi 支援 Linux 後,更加令人期待它未來的發展!

IntraWeb 在 14 版之後的異變相當大,尤其是 Page Mode 設計上。

在 Delphi 10.2 準備正式發佈時,IntraWeb 官網上也馬上提出新的 Roadmap,除了宣告最低支援開發工具版本之外,還要增加對 Linux 的支援。

Delphier 可以服務的地方就更多了,不再僅是支援 Windows-base。


一起來提升我們的競爭力吧!

see also:

2016/07/12

IntraWeb學習日記:【TIWTreeView】

作者:吳祐賓

TreeView真的很常在應用程式裡被看到,IntraWeb也有個相同的元件:【TIWTreeView】。

實際應用上也很好理解,在這邊就不賣關子,按例直接看成果圖:


程式碼如下:

2016/07/05

IntraWeb 學習日記:【TIWTabControl】

為了要實作像 Win32 Form MDI 那樣的程式,我們可以借用 IntraWeb 的 TIWTabControl 來實現多支程式的執行。

實務操作起來也不是很難,雛形大概會長成這樣:

實作程式碼如下:

2016/06/28

IntraWeb 學習日記:【Parameters】

在Web網頁應用中,常常會使用到網址列利用GET指令來傳遞參數,比方像是:
http://grandruru.blogspot.tw/index.html?MyParam=HelloEden

接著便Response給伺服器一個參數為「MyParam」,值為「HelloEden」的內容。


在IntraWeb中,由於Web Application特性,我們不能直接呼叫其它的html為起始網頁(會被引導到首頁),但是,我們仍然可以使用參數,例如:

2016/06/21

IntraWeb 學習日記:【Login】

之前有提過 IntraWeb 原始目標和ASP.NET 2.0 Web Form 一樣,都是拖拉元件的方式產生。
不過單獨介紹元件意義不大,直接看看可以做些什麼出來吧!

目前已知,要撐起一套 Win32 應用程式,大概需要以下幾個元素:

2016/04/19

IntraWeb TIWDBGrid 綁定 TIWDBEdit 編輯功能可行性研究

IntraWeb 的 IWDBGrid 似乎可以做到像是 TDBGrid 的編輯功能,於是我做了一個範例:
紫色列為TClientDataSet.RecNo
把 TIWDBGrid.Columns[1].Control 和 TIWDBEdit 綁定,畫面就如上面所示。

看起來一切都很美好,對吧?

2016/04/12

IntraWeb + Apache -- 開啟 ISAPI 支援功能

最近又沉迷 IntraWeb 的開發,在 IIS 實機一直撞牆,於是心一橫,決定使用 Apache 上試試看。

我使用的是 XAMPP Lite 1.7.2 版,在建立環境上是很簡單的。

不論是 XAMPP 是哪一個版本,搭配的 Apache 都是 2.2 版,所以設定上應該都大同小異。

一、打開 httpd.conf

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的功能,所以完成整套系統只是時間上的問題,不會有無法做完的情形,何時才能完成?等我空閒一點再說吧。 ^_^

2015/03/30

TIWDBAsyncNavigator 圖片無法顯示的問題

IntraWeb version: V14.2.3
TMS IntraWeb version: TMS IntraWeb Component Pack Pro Script Edition V5.4.1.1

在使用 TIWDBAsyncNavigator 元件時,實際執行的畫面如下:
TIWDBAsyncNavigator 的圖片無法顯示
沒有指定按鈕圖片時,IWDBAsyncNavigator預設會載入 IWDBNavigator 的圖片。

網頁原始碼比較:

IWDBAsyncNavigator 圖示路徑
IWDBNavigator 圖示路徑
檔名相同,但 IWDBAsyncNavigator 路徑缺少根目錄符號(/)。不知道是什麼原因造成,於是進入 IWDBAsyncNavigator.pas 來檢查。

在 LINE 1036 處修改如下:
{$IFDEF TMSIW11}
    {$IF FALSE}
    if url = '' then
      url := '$/gfx/DBNAV_' + Action + '.gif';
    if urld = '' then
      urld := '$/gfx/DBNAV_' + Action + 'Disabled.gif';
    {$ELSE}
    if url = '' then
      url := 'gfx/DBNAV_' + Action + '.gif';
    if urld = '' then
      urld := 'gfx/DBNAV_' + Action + 'Disabled.gif';
    {$IFEND}
{$ELSE}
    if url = '' then
      url := '/gfx/DBNAV_' + Action + '.gif';
    if urld = '' then
      urld := '/gfx/DBNAV_' + Action + 'Disabled.gif';
{$ENDIF}


IWDBAsyncNavigator  圖示終於可以正確顯示


參考資料:IWDBAsyncNavigator images

2015/03/10

IntraWeb使用ClientDataSet的注意事項


Working with ClientDataSets裡是這麼寫的:
If you are using a ClientDataSet component and you get an Access Violation when exiting the application, you need to add the DBClient unit in the application uses clause before IWMain.
The reason for the access violation is that if DBClient is not included in project file uses clause, it's internal interfaces are freed before all sessions are closed and when IW closes it's sessions it will try to free ClientDataSet component, and you will get the access violation.
When DBClient is placed before IWMain IW will free sessions before DBClient interfaces are freed.
這章節在描述TClientDataSet可能會在Session釋放前就先被清除(Freed),然後在Session要釋放時又再被釋放一次,進而發生 Access Violation。

解決的方法就是在 IWMain 前的 uses 加入 DBClient,讓釋放的順序正確,Access Violation的問題才能獲得解決。





2014/05/19

IntraWeb 入門的幾個小問題

  • Q1. 支援的瀏覽器好像很少?
  • Q2. IWFrame 怎麼裝載到 IWForm 裡?
  • Q3. Intraweb 在不使用 Templete 下如何使用 CSS?

2014/05/16

IntraWeb 架構淺談 -- 所有 Browser 都是我的 EXE

繼上回 「Intro to IntraWeb (VCL for Web) 觀後感」之後,我就開始動手試著使用 C++ Builder XE6 所附的 IntraWeb XIV 來試做一個簡單專案來玩玩,想不到就出了這篇 IntraWeb 初探了。

先說說結論吧!

2014/05/09

Intro to IntraWeb (VCL for Web) 觀後感

Intraweb (底下簡稱 IW) 的架構其實和 ASP.NET 實在有像,如果不考慮那鳥鳥的介面,在開發效率上真的是首選。

UserSessionUnit 就是一目了然的 Session 容器,可以把它視為一個 DataModule

如果 Database Session 處理得好,那這個框架最大的危機應該就剩記憶體容量了吧
(就 ClientDataSet 裝個 100K * 100 = 10MB,面對現在 T 級記憶體的 Server ……其實也不算是個問題)

就目前來看,只要 xxxConnection.KeepConnection 設為 False,其它設計上就跟 Win32 2-Tier Application 一模一樣!

真不明白 IW 還有什麼讓人拒絕它的理由?

IntraWeb 的教學影片在此,親自實作後,認真地覺得這真的是個好物啊!



2015/03/10 補充:
在影片裡,「FishData.pas」其中的全域變數:var dmFish: TdmFish,被修改為 function dmFish: TdmFish,由於名稱未按命名規則設計,如能修改為"getPublicFish"或"PUBLIC_FISH"會更容易讓觀看人理解。
但因為是要做Runtime時期「變數覆蓋」所以才這樣處理,這一點要注意。

建議先看「Getting Started」再回頭看這篇Youtube會比較容易學習。

2011/12/09

Delphi UniGUI vs Intraweb 比較


以下的資料取自:Tema: Comparativa uniGUI vs. Intraweb (Leído 1009 veces)


- UniGUI is 100% AJAX enabled.
 In Intraweb AJAX support is partially implemented.


- Intraweb can be used to develope both web sites and web applications.
 UniGUI is best for Web Applications.


- You can use custom HTML templates in Intraweb
  UniGUI doesn't emit much HTML and HTML templates aren't available


- In UniGUI you can use same code base to create a VCL desktop app and a web RIA app.
 Intraweb can not create VCL desktop apps.


- UniGUI uses Ext JS library to render web pages
- Intraweb emits its own HTML and JS code.


- In UniGUI same combo project can be used to deploy ISAPI or Standalone apps
  In Intraweb you need to have separate projects


- Intraweb can use customized CSS to change visual appearance of controls
 uniGUI relies on CSS classes in current theme for visual appearance


- In uniGUI you can dynamically create and destroy controls in AJAX calls
In Intraweb you need to refresh page to dynamically create or destroy controls.


- UniGUI is beta
 Intraweb released years ago


針對上面的資料做了以下的表格:

有時間我會再進行與 Raudus.com 的比較

2010/06/25

RAD Studio 2010 + IntraWeb 10.0.0 + jQuery = 100%成功執行方法!

RAD Studio 2010 + IntraWeb 10.0.0 + jQuery = 100%成功執行方法
標題很聳動,但其實也是從 Intraweb中引入外部js文件 看來的。
另外,Intraweb 与Jquery结合 --->使用方法 這篇,我試不出來,如果有人知道這篇所提的「腳本」是什麼東西,也麻煩回應一下唷!

方法可以說是一模一樣,不過遇到了些奇怪的問題,先把步驟貼上來吧:

1 建好js文件,在這里人比較喜歡的是用jquery 輕巧強大.然後放在files目錄下面名為jquery.js,這裡有一點要注意的是一定要入在files文錄下面,其它的目錄無效.

2 在Form的ExtraHeader屬性中添加如下代碼

 <script type="text/javascript" src="/files/jquery.js"></script>

 當然啦你也可以在Form 的onCreate事件中添加

 self.ExtraHeader.Add('<script type="text/javascript" src="/files/jquery.js"></script>');
好了到此為止,初始化的工作就做好了,然後直接的在相應的控件上寫js代碼就可以了,例如button的click事件裡面寫下如下代碼

        $("#IWEDIT1").attr("value","good");

就可以使名為iwedit1的值變為good

哈哈,相信一些有識之士能用服務器功能強大的iw與客戶端功能強大的js庫做出很多意想不到的事情哦

======================================
實作後:
一、以上步驟照抄的我,發現它不會變good……(暈)
二、我下載的是jquery-1.4.2.js,改名為jquery.js
三、不會動就是不會動 (倒)

在試了好幾天後,我又去下載了jquery-1.4.2.min.js,這次不 跟你好了 改名了

結果,它居然就正常了耶!(炸)

不信邪,又再把之前的jquery-1.4.2.js改回去(沒改名喔) ---------正常!(再炸)

最後,再將jquery-1.4.2.js改名為jquery.js,再測!-------------還是正常!(趴)

看來果然是我太累了…(逃)

IW真的做出了很多我意想不到的事情啊!(抖~)

最後的最後,補上很ok的一張圖,貼完收工!別說我詐騙你們啊!(笑)