rnet 來 顯 示 Internet Toolbar:
Internet Toolbar
在 我 的 電 腦 上 安 裝 的 網 頁 編 輯 程 式 是 UltraDev , 因 此 我 按 下 External Edit 按 紐 後 的 畫 面 如 下 :
接 下 來 就 是 網 頁 編 輯 的 工 作 啦 , DELPHI 6 的 IDE 真 的 很 方 便 不 是 嗎 ? 如 果 網 頁 編 輯 的 人 不 是 你 自 己 的 話 , 你 可 以 將 uHome.html 複 製 給 她 , 設 計 完 成 後 再 放 回 你 的 專 案 目 錄 中 就 可 以 了 。
2-1 、 牛 刀 小 試 , 簡 單 的 AdpterField 運 用
現 在 讓 我 們 回 到 DELPHI IDE 中 , 現 在 我 們 有 個 問 題 , 如 果 我 們 想 在 網 頁 中 顯 示 今 天 日 期 的 話 該 怎 麼 做 呢 ? 很 簡 單 ! 我 們 可 以 利 用 TAdapterField 與 JScript 來 完 成 這 個 工 作 。 請 切 換 到 Home Module 上 , 在 TApplicationAdapter 元 件 中 你 可 以 發 現 到 Data 這 個 特 性 值 , 雙 按 她 後 會 開 出 以 下 的 畫 面 :
我 們 可 以 在 這 個 Field Designer 視 窗 中 加 入 AdapterField 類 的 元 件 , 請 在 設 計 畫 面 中 按 右 鍵 :
在 這 個 選 單 中 我 們 可 以 新 增 AdapterField 到 TApplicationAdapter 中 , 請 你 先 選 擇 Add All Fields 這 個 選 項 , 這 會 新 增 一 個 TApplicationTitleField 元 件 至 TApplicationAdapter 元 件 中 。 完 成 後 請 你 再 按 右 鍵 選 擇 New Component 選 單 :
請 選 擇 新 增 一 個 AdapterField 元 件 , 接 著 我 們 再 設 定 這 個 AdapterField 元 件 的 特 性 值 :
在 這 個 程 式 中 , 我 們 的 目 的 是 要 在 Script 中 使 用 這 個 AdapterField 來 取 得 當 天 的 日 期 。 因 此 我 們 要 為 這 個 AdapterField 撰 寫 取 得 日 期 的 事 件 , 請 切 到 Events 頁 , 撰 寫 OnGetValue 事 件 程 式 :
procedure THome.AdaptTodayGetValue(Sender: TObject;
var Value: Variant);
begin
Value:=DateToStr(Date);
end;
完 成 後 我 們 還 要 撰 寫 取 值 的 Script 程 式 , 請 切 到 .html 頁 在 Application.Title 下 一 行 加 入 以 下 的 Script 程 式 :
<h2> 今 天 是 <%= Application.Today.Value %></h1>
編 譯 完 成 後 執 行 程 式 , 你 應 該 可 以 看 到 這 樣 的 畫 面 :
很 簡 單 不 是 嗎 ? 以 往 要 達 到 這 種 效 果 我 們 得 先 寫 個 ASP Object , 接 著 再 使 用 ASP 來 呼 叫 這 個 Object 。 過 程 中 不 但 要 使 用 兩 種 工 具 , 還 得 注 意 COM 複 雜 且 難 懂 的 規 則 , 有 了 WebSnap 之 後 , 這 一 切 都 改 觀 了 。 我 們 既 可 以 得 到 ServerSide-Script 的 優 點 , 又 可 以 使 用 熟 悉 的 元 件 架 構 及 DELPHI 來 設 計 網 頁 程 式 , 這 大 大 的 增 加 程 式 師 的 產 能 。 在 這 個 範 例 中 , 你 可 能 會 很 納 悶 為 何 我 們 新 增 的 AdapterField 使 用 方 式 與 使 用 Title 時 不 同 呢 ? 看 起 來 Title 的 使 用 方 式 似 乎 簡 單 的 多 了 。 這 是 因 為 ApplicationAdapter 的 Wrapper Object 特 別 輸 出 了 一 個 Title 的 特 性 值 來 直 接 傳 回 Title 的 值 , 這 牽 扯 到 Wrapper Object 的 設 計 方 式 , 我 們 等 到 Inside WebSnap 一 文 中 再 詳 細 討 論 這 部 份 。
2-3 、 計 算 機 , AdapterField 與 AdapterAction 的 結 合
AdapterField 元 件 的 目 的 是 用 來 處 理 資 料 , 在 WebSnap 中 還 有 一 種 與 她 相 同 等 級 的 元 件 : AdapterAction , 這 種 Adapter 是 用 來 執 行 某 個 動 作 。 接 著 我 們 就 來 應 用 一 下 AdapterAction , 我 們 要 設 計 一 個 簡 單 的 計 算 機 , 目 的 只 是 要 將 使 用 者 輸 入 的 值 相 加 後 顯 示 出 來 。 請 回 到 IDE 中 新 增 一 個 Page Module 到 專 案 中 , 請 使 用 Internet Toolbar 或 是 New Items Dialog 。
我 們 在 這 個 Page Module 中 選 擇 使 用 AdapterPageProducer , 她 可 以 讓 我 們 使 用 DELPHI 所 提 供 的 視 覺 化 網 頁 設 計 功 能 (Visual Page Designer) 來 設 計 網 頁 :
然 後 我 們 新 增 一 個 Adapter 元 件 來 儲 存 AdapterField 及 AdapterAction:
接 著 我 們 雙 按 Adapter 元 件 中 的 Data 特 性 值 , 新 增 三 個 AdapterField: FirstValue 、 SecondValue,Result
First 與 Second 這 兩 個 AdapterField 是 用 來 儲 存 使 用 者 所 輸 入 的 資 料 。 Result 則 是 用 來 顯 示 結 果 值 用 。 接 下 來 我 們 還 需 要 一 個 確 定 的 按 紐 , 確 切 的 說 是 一 個 AdapterAction , 因 為 我 們 需 要 在 使 用 者 按 下 按 紐 後 執 行 相 加 的 動 作 。 記 得 嗎 ? AdapterAction 就 是 用 來 執 行 動 作 用 的 , 請 雙 按 Adapter 中 的 Actions 特 性 值 新 增 一 個 AdapterAction:
然 後 設 定 Action 的 特 性 值 。
接 著 我 們 還 要 定 義 一 個 變 數 來 儲 存 結 果 , 以 便 將 計 算 的 結 果 顯 示 給 使 用 者 。 在 這 裡 我 們 必 需 要 釐 清 一 個 觀 念 , 表 面 上 來 看 , AdapterField 是 用 來 儲 存 資 料 的 , 但 儲 存 資 料 用 的 容 器 ( 也 就 是 變 數 ) 則 是 要 我 們 來 提 供 。 因 此 請 在 程 式 碼 的 class 區 段 中 加 入 這 一 段 變 數 宣 告 :
private
FResultValue:string;
在 使 用 這 個 變 數 前 我 們 需 要 初 始 化 她 , 免 得 下 次 的 計 算 結 果 不 正 確 , 記 得 第 一 節 的 Web Module 說 明 嗎 ? 最 佳 的 初 始 化 事 件 可 不 是 OnCreate 哦 , 是 OnActivate! 請 在 這 個 事 件 中 將 FResultValue 變 數 初 始 成 空 字 串 , 之 後 再 為 AdaptResult 這 個 AdapterField 添 加 OnGetValue 事 件 , 在 裡 面 加 上 下 面 這 段 程 式 碼 :
Value:=FResultValue;
最 後 我 們 在 AdapterAction.OnExecute 事 件 中 加 上 處 理 計 算 部 份 的 程 式 碼 :
procedure TCalc.AdaptCalcExecute(Sender: TObject;
Params: TStrings);
var
v1,v2:Integer;
begin
v1:=AdaptFirstValue.ActionValue.Values[0];
v2:=AdaptSecondValue.ActionValue.Values[0];
FResultValue:=IntToStr(v1+v2);
end;
你 可 以 發 覺 到 , 在 這 個 事 件 中 我 們 使 用 的 是 AdapterField.ActionValue 這 個 特 性 值 而 不 是 Value 。 這 是 因 為 WebSnap 會 將 使 用 者 所 輸 入 的 值 是 儲 存 在 ActionValue 中 , 以 這 個 範 例 來 解 釋 的 話 就 是 : 使 用 者 輸 入 了 兩 個 值 並 按 下 Calc 按 紐 後 瀏 覽 器 就 會 將 這 些 資 訊 Post( 指 HTTPPost Method) 到 WebSnap 程 式 中 , 接 著 WebSnap 程 式 就 會 解 出 使 用 者 所 輸 入 的 兩 個 值 存 到 AdapterField.ActionValue 特 性 中 , 接 著 取 出 Action 的 資 訊 並 執 行 Action 。 為 何 要 這 麼 麻 煩 呢 ? 呵 ! 你 不 會 想 把 ActionValue 與 Value 合 成 一 個 的 , 因 為 這 樣 你 如 何 分 辨 原 值 與 使 用 者 所 輸 入 的 值 呢 ?
繼 續 我 們 的 程 式 , 現 在 我 們 要 開 始 設 計 計 算 機 的 網 頁 了 。 請 你 雙 按 AdapterPageProducer 開 出 Visual Page Designer 視 窗 :
在 AdapterPageProducer 上 按 滑 鼠 右 鍵 新 增 一 個 AdapterForm 元 件 :
然 後 在 AdapterForm 上 按 右 鍵 選 擇 New Componetns 新 增 一 個 AdapterFieldGroup 元 件 。
接 著 設 定 AdapterFieldGroup 的 Adapter 特 性 值 為 Adapter1 。
上一页 [1] [2] [3] 下一页 [聊天工具]Gmail推出新功能:Web Clip__天极Yesky [聊天工具]Web MSN你玩了吗__天极Yesky [系统软件]Web Browser Express 概述 [系统软件]对Internet Explorer Web 控件做一点修改 [常用软件]小技巧:三步实现Web迅雷录制PPLive节目 [常用软件]天网防火墙:打开WEB和FTP服务 [VB.NET程序]使用VB.Net做一个配置web.config功能的WinForm(原… [VB.NET程序]vb.net控件、web service简述 [VB.NET程序]使用vbscript脚本调用web服务 [VB.NET程序]*** Web 存储系统窗体:窗体注册表 (new)***
|