線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:29327
推到 Plurk!
推到 Facebook!
[<<] [1] [2] [3] [4] [5] [>>]

HTML App Develop Framework 套件 Delphi7 先行版

 
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-12-19 17:15:53 IP:114.33.xxx.xxx 訂閱
 To all Delphi Users:
這是小弟委託G01大大授權予以修改後進行發佈的D7第一個版本先行版,
給想要以最簡單的方式開發Web應用程式的各位嘗鮮並提供意見;
這個版本支援三種資料傳輸的做法--->1.Form Tag Post 2.FrameWork Define Post 以及 3.Ajax Post
先將元件分享給大家,小弟後面會再補上一些簡易的Demo

對了!! 這個套件可以開發給android手機的瀏覽器來使用
編輯記錄
JL9168 重新編輯於 2011-12-19 19:52:58, 註解 無‧
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-12-19 17:25:40 IP:114.33.xxx.xxx 訂閱
以下為開發此類應用程式的樣板架構
Library Example;
uses
Classes,
Windows,
SysUtils,
Dialogs,
Forms,
ISAPI,
UAdv_ISAPI_Utils;
//ISAPI Main procedures !!
//參數與物件初始化的Function
procedure WebInitProc(Session:TAdv_WebSession;InInitParams:string;DynamicOwner:TComponent);
begin
with Session do
begin
///RegisterWebPage();
end;//with...end!!
end;
//釋放參數與物件的Function
procedure WebReleaseProc(Session:TAdv_WebSession);
begin
with Session do
begin
end;//with...end!!
end;
//回應並處理Ajax事件的Function
procedure AjaxEventProc(Session:TAdv_WebSession);
begin
end;
//Web應用程式的主程式
procedure WebAppMain(Session:TAdv_WebSession;Request:TPub_Request;Response:TPub_Response);
var TempStr:string;
Label TheEnd;
begin
if(Request.EventPage = '')then
begin
//Response.Write('Hello World !! ');
end//if...end!!
else
begin
if(Request.EventSenderDesc = '回首頁')then
begin
///Response.Write(fWebMain.Main_Page.CtrlToHtml);
end//if...end!!
else
begin
end;//else...end!!
//--------------------------------------------------------------
TheEnd:
TempStr := '';
//--------------------------------------------------------------
end;//else...end!!
end;
function HttpExtensionProc(var ECB:TEXTENSION_CONTROL_BLOCK):DWORD; stdcall;
begin
result := DoHttpExtensionProc( Application,'EMPTY-PARAMS'
,WebAppMain,WebInitProc,WebReleaseProc,AjaxEventProc
,ECB);
end;
Exports
HttpExtensionProc;
//==== DLL Main Procedure ====
begin
//---------------------------------------------------------------
//fMain := TfMain.Create(Application);
//---------------------------------------------------------------
end.
編輯記錄
JL9168 重新編輯於 2011-12-19 02:26:27, 註解 無‧
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-12-19 20:20:29 IP:114.33.xxx.xxx 訂閱
 WebAppMain () 決定整個網站的主要網頁流程(如果要以Ajax來執行這樣的工作也可以在AjaxEventProc中完成)
因為是以類似觸發事件(Event)的方式來判斷處理,所以在主程式中就會依照"Request.EventSenderDesc"的
描述分別來處理或傳送不同的結果網頁。

而function HttpExtensionProc則是ISAPI應用程式與這個Framework的連接點!!
所以,以下這段程式碼就是整個程式的核心:

result := DoHttpExtensionProc( Application,'EMPTY-PARAMS'
,WebAppMain,WebInitProc,WebReleaseProc,AjaxEventProc
,ECB);
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-12-20 08:56:25 IP:114.33.xxx.xxx 訂閱
 標準開發程序(圖001)
標準開發程序001
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-12-20 09:01:55 IP:114.33.xxx.xxx 訂閱
 圖002

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-12-20 09:04:54 IP:114.33.xxx.xxx 訂閱
 程式碼部份-原本的DLL程式碼(圖003)

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2011-12-20 09:07:07 IP:114.33.xxx.xxx 訂閱
 把它全部置換成我們要的樣版程式碼(圖004)

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#8 引用回覆 回覆 發表時間:2011-12-20 09:09:54 IP:114.33.xxx.xxx 訂閱
將它儲存為"Simple00.dpr"(圖005)

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#9 引用回覆 回覆 發表時間:2011-12-20 09:13:13 IP:114.33.xxx.xxx 訂閱
 如果不添加任何程式碼,將它編譯之後的Simple00.DLL掛載到你的Http Server ;執行起來就像這樣(圖006)

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#10 引用回覆 回覆 發表時間:2011-12-20 09:45:57 IP:114.33.xxx.xxx 訂閱
 我們開始在主程式加入程式如下圖紅色框框的部分 (圖007)

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#11 引用回覆 回覆 發表時間:2011-12-20 09:48:08 IP:114.33.xxx.xxx 訂閱
 執行起來就是這樣(圖008)

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#12 引用回覆 回覆 發表時間:2011-12-20 09:51:35 IP:114.33.xxx.xxx 訂閱
 接下來要加入HTML畫面了,首先先NEW一個TForm,然後在元件組中找一個TAdv_HTML_Page的元件如下

編輯記錄
JL9168 重新編輯於 2011-12-19 18:51:58, 註解 無‧
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#13 引用回覆 回覆 發表時間:2011-12-20 09:56:42 IP:114.33.xxx.xxx 訂閱
 將TAdv_HTML_Page元件放到TForm上面之後,將它的屬性En_codeTyp設定為En_ChineseT(繁體中文),
再將TAdv_HTML_Page元件改名為"MainPage",表單Form1更名為"fMain"之後,儲存為UfMain.pas

編輯記錄
JL9168 重新編輯於 2011-12-19 19:04:07, 註解 無‧
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#14 引用回覆 回覆 發表時間:2011-12-20 09:59:20 IP:114.33.xxx.xxx 訂閱
 接下來在程式碼部份加入紅色方框的程式碼,如下

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#15 引用回覆 回覆 發表時間:2011-12-20 10:02:35 IP:114.33.xxx.xxx 訂閱
然後在程式碼 WebAppMain()底下將原本的"Hello world!!" 那一段改為下圖的程式碼

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#16 引用回覆 回覆 發表時間:2011-12-20 10:12:09 IP:114.33.xxx.xxx 訂閱
執行起來就像這樣,因為TAdv_HTML_Page上面沒有任何物件;所以看起來是灰灰的一片(顏色可以自訂)

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#17 引用回覆 回覆 發表時間:2011-12-20 10:17:40 IP:114.33.xxx.xxx 訂閱
 接下來在TAdv_HTML_Page上面放上TAdv_HTML_Panel元件




然後依序在TAdv_HTML_Panel上面放入其它元件,如下

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#18 引用回覆 回覆 發表時間:2011-12-20 10:20:20 IP:114.33.xxx.xxx 訂閱
 執行起來就像這樣































待續.....................事件的觸發與處理
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#19 引用回覆 回覆 發表時間:2011-12-20 13:38:20 IP:114.33.xxx.xxx 訂閱
接下來就是事件的觸發與處理,目標為輸入資料後,按下按鈕;Server回應使用者輸入了哪些資料
首先,我們要設定按鈕元件;如下圖,將按鈕的EventType設定為evtFormSubmit (FrameWork內定的Post機制)
然後把按鈕的Value屬性改為"完成輸入"


編輯記錄
JL9168 重新編輯於 2011-12-19 22:44:00, 註解 無‧
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#20 引用回覆 回覆 發表時間:2011-12-20 13:45:23 IP:114.33.xxx.xxx 訂閱
 我們先不對程式碼做修改,直接這樣執行;會看到這樣的結果
























可以看到按鈕的事件已經被觸發了
編輯記錄
JL9168 重新編輯於 2011-12-19 22:46:28, 註解 無‧
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#21 引用回覆 回覆 發表時間:2011-12-20 13:49:15 IP:114.33.xxx.xxx 訂閱
 接下來我們把程式碼改為下面這樣,再執行看看

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#22 引用回覆 回覆 發表時間:2011-12-20 13:54:03 IP:114.33.xxx.xxx 訂閱
 執行的結果
























按下按鈕之後


























但是Edit內的資料沒有傳回來,所已接下來是設定TADV_HTML的"EventCheckForm"屬性


編輯記錄
JL9168 重新編輯於 2011-12-19 22:56:27, 註解 無‧
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#23 引用回覆 回覆 發表時間:2011-12-20 14:00:22 IP:114.33.xxx.xxx 訂閱
 設定完成

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#24 引用回覆 回覆 發表時間:2011-12-20 14:01:23 IP:114.33.xxx.xxx 訂閱
執行的結果

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#25 引用回覆 回覆 發表時間:2011-12-20 14:03:56 IP:114.33.xxx.xxx 訂閱
 以上,就是最基本的web App 的開發了,所以也可以藉由這樣的方式來置換網頁!!

待續.....進階的技巧,BeforeCreateHTML Event 與 TFrame
JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#26 引用回覆 回覆 發表時間:2011-12-22 15:28:12 IP:114.33.xxx.xxx 訂閱
 BCB5的先行版也是呼之欲出了,先給大家看一下BCB5版的主程式架構大概如下
//---------------------------------------------------------------------------
#include
#include
#include
#include "UfMain.h"
#include "UfTest.h"
#include "UfImg.h"
#pragma hdrstop
USEFORM("UfMain.cpp", fMain);
USEFORM("UfTest.cpp", fTest);
USEFORM("UfImg.cpp", fImg);
//---------------------------------------------------------------------------
#define Application Forms::Application
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
try
{
fMain = new TfMain(Application);
fTest = new TfTest(Application);
fImg = new TfImg(Application);
}
catch (Exception &exception)
{
}
return 1;
}
//-------------------------------------------------------------------------------
//網頁主程式
void _fastcall WebAppMain( TAdv_WebSession* Session, TPub_Request* Request
,TPub_Response* Response)
{
if(Request->EventPage == "")
{
Response->Write(fMain->MainPage->CtrlToHtml("") );
}
else
{
if(Request->EventSenderDesc=="回首頁" )
Response->Write(fMain->MainPage->CtrlToHtml("") );
if(Request->EventSenderDesc=="To TestPage" )
Response->Write(fTest->Adv_HTML_Page1->CtrlToHtml(""));
if(Request->EventSenderDesc=="ToImgPage" )
Response->Write(fImg->ImgPage->CtrlToHtml(""));
}
}
//-------------------------------------------------------------------------------
extern "C"
{
int __export WINAPI HttpExtensionProc(Isapi2::TEXTENSION_CONTROL_BLOCK &ECB)
{
pub_App=Application;
pub_InitParamStr = "EMPTY-PARAMS";
pub_WebMainProc = WebAppMain;
pub_InitialProc = NULL;
pub_ReleaseProc = NULL;
pub_AjaxEventProc = NULL;
return Uadv_isapi_utils::HttpExtensionProc(ECB);
}
}
//---------------------------------------------------------------------------
編輯記錄
JL9168 重新編輯於 2011-12-22 00:34:55, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:632
積分:878
註冊:2004-04-16

發送簡訊給我
#27 引用回覆 回覆 發表時間:2011-12-22 20:47:56 IP:202.39.xxx.xxx 訂閱
非常讚!
GrandRURU
站務副站長


發表:234
回覆:1654
積分:1752
註冊:2005-06-21

發送簡訊給我
#28 引用回覆 回覆 發表時間:2011-12-23 09:46:45 IP:59.120.xxx.xxx 未訂閱
這框架不錯哦!

不知道它的核心是不是也用Ext JS?

感覺發展的很快,連BCB都有了!
ANDY8C
資深會員


發表:114
回覆:582
積分:299
註冊:2006-10-29

發送簡訊給我
#29 引用回覆 回覆 發表時間:2011-12-23 13:43:45 IP:115.30.xxx.xxx 未訂閱
  
不錯喔 !! 讚 1

這是公益軟體 ??

還是有更完整的付費版本 ?? 我是想拿來研究看看

我電腦已經無 DELPHI 7的環境,用 XE2 練習,

突然發現 XE2 無有建立 DLL 的功能 ? (還是我眼花了)




------
---------------------------------------
偶爾才來 KTOP ,交流條碼問題,在 FB [條碼標籤達人] 社團留言,感恩.
herbert2
尊榮會員


發表:58
回覆:632
積分:878
註冊:2004-04-16

發送簡訊給我
#30 引用回覆 回覆 發表時間:2011-12-23 15:33:23 IP:202.39.xxx.xxx 訂閱
新版常會令人眼花的

JL9168
中階會員


發表:133
回覆:223
積分:76
註冊:2011-09-29

發送簡訊給我
#31 引用回覆 回覆 發表時間:2011-12-23 16:07:36 IP:114.33.xxx.xxx 訂閱
 To Andy8C:

這是長期研究KbmWABD這個套件的G01大大的的結晶,他寫HTMLFramework已經是第三
個版次了,在這個期間出現了Ajax、jQuery...等等的技術應用......他說他也覺得追的蠻辛苦的
......

後來又出現了Ext JS,所以不排除引入Ext JS的新技術目標是希望讓Delphi也能毫無痛苦地
延伸觸角到Web的開發,其實小弟的意思是將來會分階段開發,目前的先行版1.0是支援到
以Ajax技術;1.0之後的版本會希望將Ext JS作為主要標準(不過Ext JS要錢的.....所以.....)。

先行版的核心就已經把client端的管理列入標準了,在不需要額外寫程式碼的狀況下就可以
管控Client端的資訊,舉凡登入資訊頁面追蹤,特定IP位址的頁面資料傳送;甚至於是
ISAPI的Redirect機制等等
......(這些都不需要"小餅乾"-->Cookies 喔!! )

目前聽說有在研究是否可以做Report做到像 quickreport 一樣....不過小弟覺得不太可能....
G01大大說很希望看到一個既能得到Windows32的好處,又能符合Web App標準的東西出
現.....

另外,先行版的釋放只是給大家試用,如果有想法或是問題我們會在正式(完整)版予以改
進,目前的後續發展由小弟負責;如果有意見可以發簡訊給我!!

PS. 需要第一版BCB5先行版的朋友請留簡訊給我!!


編輯記錄
JL9168 重新編輯於 2011-12-23 01:08:52, 註解 無‧
JL9168 重新編輯於 2011-12-23 01:10:14, 註解 無‧
JL9168 重新編輯於 2011-12-23 01:14:26, 註解 無‧
JL9168 重新編輯於 2011-12-23 01:22:56, 註解 無‧
JL9168 重新編輯於 2011-12-23 01:28:26, 註解 無‧
JL9168 重新編輯於 2011-12-23 01:32:18, 註解 無‧
[<<] [1] [2] [3] [4] [5] [>>]
系統時間:2017-11-24 15:37:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!