转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Web Application 開 發 利 器 - WebSnap(七)         ★★★★

Web Application 開 發 利 器 - WebSnap(七)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2318 更新时间:2009/4/23 18:40:09

Web Application 開 發 利 器 - WebSnap!

第 七 章 、 深 入 Adapter

 

  這 一 章 的 目 的 在 於 完 全 了 解 Adapter 在 WebSnap 中 所 代 表 的 意 義 及 更 深 入 的 使 用 她 們 , 之 前 我 們 利 用 了 Adapter 與 AdapterField 來 處 理 簡 單 的 資 料 顯 示 , 如 計 算 機 程 式 , 接 著 利 用 了 DataSetAdapter 來 處 理 資 料 庫 。 但 我 想 這 對 你 來 說 還 是 不 足 以 了 解 整 個 Adapter 在 WebSnap 所 扮 演 的 角 色 , 因 此 這 一 節 我 們 將 針 對 幾 個 Adapter 做 深 入 的 運 用 , 看 完 這 一 節 後 , 相 信 你 對 Adapter 的 應 用 及 為 何 WebSnap 如 此 依 賴 她 會 有 相 當 的 體 會 。

  

7-1 、 簡 單 的 Adapter :TAdapter

 

   TAdapter 是 最 簡 單 的 Adapter Container , 之 前 我 們 只 將 她 應 用 在 將 程 式 中 的 變 數 資 料 顯 示 於 網 頁 中 , 例 如 計 算 機 網 頁 , 但 她 的 能 力 可 不 僅 止 於 此 , 撇 開 撰 寫 你 自 己 的 TAdapter 元 件 這 個 技 術 不 談 ( 那 是 Inside WebSnap 的 課 題 ) , 我 們 可 以 利 用 TAdapter 來 封 裝 不 同 類 型 的 資 料 , 這 個 技 術 對 我 們 來 說 相 當 有 用 。 例 如 我 們 可 以 將 她 應 用 在 製 作 類 似 PCHome 的 檔 案 總 管 網 頁 上 , 接 下 來 我 們 先 製 作 一 個 小 程 式 , 這 個 程 式 利 用 TAdapter 來 封 裝 TStringsValueList , 並 使 用 TAdapterGrid 將 她 顯 示 在 網 頁 上 , 請 新 增 一 個 Page Module 到 專 案 中 , 將 Page Name 設 成 MyAdapter 及 選 擇 TAdapterPageProducer 為 PageProducer , 接 著 放 至 一 個 TAdapter 及 一 個 TStringsValueList 元 件 到 這 個 Module 中 , 接 著 我 們 還 要 設 定 TStringsValueList 內 的 資 料 及 AdapterField: 

 

設 定 完 顯 示 的 資 料 後 , 我 們 還 要 加 入 兩 個 AdapterField 到 TStringsValueList 中 , 請 在 TStringsValueList 的 Field Editor 中 按 右 鍵 選 擇 Add All Fields:

 

 

要 將 資 料 顯 示 在 網 頁 上 , 我 們 還 得 在 TAdapter 中 新 增 幾 個 AdapterField 才 行 , 這 個 範 例 中 我 們 需 要 兩 個 AdapterField , 一 個 用 來 顯 示 站 名 , 另 一 個 則 用 來 顯 示 URL , 完 成 後 我 們 就 可 以 開 始 撰 寫 處 理 的 程 式 碼 , 由 於 我 們 的 目 的 是 要 使 用 TAdapterGrid 來 顯 示 TStringsValueList 中 的 資 料 。 因 此 我 們 得 撰 寫 TAdapter.OnIterateRecords 這 個 事 件 , 並 且 在 裡 面 移 動 TStringsValueList 的 記 錄 指 標 :

 

procedure TMyAdapter.Adapter1IterateRecords(Sender: TObject;

  Action: TIteratorMethod; var EOF: Boolean);

var

  Intf:IIteratorSupport;

  P:Pointer;

begin

  Intf:=svSite as IIteratorSupport;

  case Action of

       itStart:

               Intf.StartIterator(P);

       itNext :

               EOF:=not Intf.NextIteration(P);

       itEnd  :

              begin

               Intf.EndIterator(P);

               EOF:=True;

              end;

  end;

end;

 

在 這 個 事 件 中 我 們 使 用 了 一 個 介 面 :IIteratorSupport , 實 作 這 個 介 面 代 表 著 該 元 件 支 援 游 標 型 態 的 操 作 。 接 著 我 們 要 撰 寫 AdapterField 中 的 OnGetValue , 提 供 TStringsValueList 中 的 字 串 給 TAdapterGrid 使 用 :

 

procedure TMyAdapter.AdaptSiteNameGetValue(Sender: TObject;

  var Value: Variant);

begin

  Value:=AdaptNameField.Value;

end;

 

procedure TMyAdapter.AdaptSiteAddressGetValue(Sender:TObject;

         var Value: Variant);

begin

  Value:=AdaptValueField.Value;

end;

      

接 著 我 們 開 始 設 計 網 頁 , 開 啟 Visual Page Designer 視 窗 , 新 增 一 個 AdapterForm 及 一 個 AdapterGrid 後 , 你 會 看 到 這 樣 的 畫 面 :

 

 

然 後 執 行 程 式 後 我 們 就 可 以 看 到 成 果 了 :

 

 

很 簡 單 不 是 嗎 ? 這 個 範 例 讓 我 們 了 解 到 Adapter 的 存 在 意 義 。 我 們 可 以 使 用 TAdapter 來 封 裝 任 何 型 態 的 資 料 , 並 在 網 頁 中 顯 示 資 料 , 而 你 只 要 撰 寫 幾 個 事 件 就 可 以 了 , 這 可 以 應 用 在 許 多 地 方 , 例 如 檔 案 列 表 、 搜 尋 結 果 或 是 顯 示 一 些 非 正 規 的 資 料 庫 等 等 。 從 這 個 範 例 中 我 們 也 可 以 大 略 猜 到 TDataSetAdapter 如 何 將 資 料 庫 資 料 封 裝 起 來 , 並 提 供 她 們 給 TAdapterGrid 及 TAdapterFieldGroup 來 顯 示 。 當 然 ! 如 果 你 的 目 的 只 是 要 顯 示 TStringsValueList 中 的 資 料 的 話 , 那 直 接 將 TStringsValueList 設 給 AdapterGrid 就 行 了 , 這 裡 我 是 為 了 展 示 以 TAdapter 封 裝 某 種 資 料 的 技 術 才 這 樣 使 用 。

  

7-2 、 TPagedAdapter

   TPagedAdapter 的 功 能 與 使 用 方 式 大 致 與 TAdapter 相 同 , 不 過 她 增 加 了 分 頁 的 能 力 , 所 謂 分 頁 的 能 力 指 的 是 當 一 個 網 頁 中 的 資 料 過 多 時 , 我 們 利 用 一 個 以 上 的 網 頁 來 顯 示 她 們 , 例 如 你 在 搜 尋 引 擎 查 出 結 果 後 , 當 結 果 筆 數 超 過 20-30 筆 時 , 你 會 看 到 網 頁 下 方 有 頁 次 顯 示 , 利 用 TPagedAdapter 我 們 可 以 輕 易 的 做 出 這 種 網 頁 。 接 下 來 就 讓 我 們 利 用 一 個 檔 案 列 表 的 範 例 程 式 來 展 示 如 何 應 用 TPagedAdpater , 請 你 新 增 一 個 Page Module 到 專 案 中 , 將 PageName 設 成 MyPageAdapter 並 選 擇 AdapterPageProducer 為 PageProducer , 接 著 放 入 一 個 TPagedAdapter 元 件 , 新 增 兩 個 AdapterField 元 件 到 裡 面 :

 

 

然 後 我 們 要 撰 寫 建 立 TStrings 物 件 , 以 及 將 檔 案 列 表 儲 存 到 TStrings 的 函 式 :

 

procedure TMyPageAdapter.InitializeList(AListDir:string);

var

  sr: TSearchRec;

begin

  FStrings.Clear;

  TStringList(FStrings).Sorted:=False;

  if FindFirst(AListDir,faAnyFile,sr) = 0 then

   begin

     repeat

       if sr.Attr <> faDirectory then

          FStrings.Add(sr.Name+''''=''''+IntToStr(sr.Size));

     until FindNext(sr) <> 0;

   end;

  TStringList(FStrings).Sorted:=True;

end;

 

procedure TMyPageAdapter.WebPageModuleCreate(Sender: TObject);

begin

  FStrings:=TStringList.Create;

end;

 

procedure TMyPageAdapter.WebPageModuleDestroy(Sender: TObject);

begin

   FStrings.Free;

end;

 

procedure TMyPageAdapter.WebPageModuleActivate(Sender: TObject);

begin

  InitializeList(AppPath+''''\*.*'''');

end;

      

撰 寫 TPagedAdapter 及 AdapterField 的 相 關 事 件 :

 

 

procedure TMyPageAdapter.PagedAdapter1GetEOF(Sender: TObject;

              var EOF: Boolean);

begin

   EOF:=not (FIndex < FStrings.Count);

end;

procedure TMyPageAdapter.PagedAdapter1GetFirstRecord(Sender: TObject;

              var EOF: Boolean);

begin

   FIndex:=0;

   EOF:=FStrings.Count = 0;

end;

procedure TMyPageAdapter.PagedAdapter1GetNextRecord(Sender: TObject;

         var EOF: Boolean);

[1] [2] [3] [4]  下一页


[聊天工具]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)***
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台