DELPHI 6 抢先研究 -- WebSnap 研究之一 - -- 一个最简单的例子

WebSnap 是 Delphi 6 中最重要的三大 Snap 之一。 她可以说是从 Delphi 5 的 InternetExpress 技术发展而来的,当然,为了保持兼容性, InternetExpress 在 Delphi 6 中仍然保留。 WebSnap 将用 Delphi 进行 B/S 应用的开发带入了一个全新的领域。

为了方便 B/S 应用的开发, Delphi 6 集成了 HTML 编辑功能, 并可以通过调用外部 HTML 开发工具,如 DreamWeaver 之类,来更加高效地进行 Web 页面的设计。具体的方法:

1.设置:此功能必须先设置后才能用,设置方法如下:在 Delphi 6 中选 Tools|Environment Options|Internet , 在 Internet File Types 中选中 HTML ,如下图

按 Edit 按钮,在 Edit Action 的下拉列表中选中 Edit with Dreamweaver ,如下图。 注意:前提是你必须安装了 DreamWeaver ,当然,如果你装了其它的 Web 页面编辑工具, 如: Front Page, Visual Studio.Net 等的话,也可以选它们。如果你确定已经安装了 Dreamweaver , 但在下拉列表中却没有也可以直接在 Edit Action 中输入 Edit with Dreamweaver ;

2.使用:在进行 WebSnap 开发时,选 Tools|External Editor 即可调用设置好的 Web 页面设计工具进行 Web 页面的设计了。

接下来我们来看一看用 WebSnap 开发 B/S 应用是何等的简单:

1.New|WebSnap|WebSnap Application (如上图),选择 CGI (如下左图,如果你要用 Web App Debugger ,请参见: 《DELPHI 6 抢先研究 -- Web 应用开发及调试》一文),点 PageOptions 按钮, 在弹出的对话框(如下右图)中选择 Type 为 AdapterPageProducer , Name 设为 Home ,其它不变,然后依次确定;

2.SaveAll , Unit1 命名为: HomePg , Project1 命名为: WsTest ;

3.打开 HomePg 模块,在其中放上 BDE 页中的 TTable 和 WebSnap 页中的 TDataSetAdapter 两个控件,将 TTable 的 DataBase 属性设为 DBDEMOS , 将 TableName 属性设为 country.db ,然后将 TDataSetAdapter 的 DataSet 属性设为 TTable1 ,否则将出现类似下面的错误信息;

4.双击 AdapterPageProducer 将打开一个页面设置窗口(如下图),在其左上角的树的 AdapterPageProducer 节点下增加一个 AdapterForm 节点, 再在这个 AdapterForm 节点下增加一个 AdapterGrid 节点。选取中 AdapterGrid 结点,在 ObjectInspector 中设置其 Adapter 属性为 DataSetAdapter1 , 展开 Adapter 属性,在其中找到 DataSet 属性,再将其展开后找到 Active 属性,将其设为 true ;

5.看到了没?就像上面的图片那样,我们还没有写一行代码就已经把数据库 DBDEMOS 里的 country 表的内容以网页的形式显示出来了;

6.如果还不相信,那我们编译后打开浏览器,输入 URL : http://localhost/delphi6/websnap/wstest.exe (这里以我的机器为例, 我已经在 PWS 里设置了虚拟目录 delphi6 指向我的一个专用于存放 Delphi 6 应用程序的目录, 这个 WebSnap 应用程序就在此目录下的 websnap 目录里,将此虚拟目录设置为可执行权限),等等!怎么会出现“HTTP 500 内部服务器错误”? 其实写过多线程 BDE 应用的人一眼就可以看到前面程序的问题:少了一个 Session 控件!

7.回到 HomePg 模块,放上一个 BDE 页里的 TSession 控件,设置其 AutoSessionName 为 true ,将 Table1 的 SessionName 设置为 Session1_1 ( TSession 的 SessionName 属性,在 AutoSessionName = true 时会自动产生, 最后一位数字不一定是 1,一般情况下, Table 是会自动设置此属性的)。重新编译后打开浏览器,输入前面的 URL ,这下看到了吧(在浏览器里看到的页面)?下面是完成后的程序的 Delphi 6 IDE 屏幕图片:

WebSnap 将 Web 应用开发简化到不写一行代码的程度, WebSnap 就是这么酷!

当然,这是最简单的 Web 开发,实际的应用当然要复杂得多了,我将陆续进一步 介绍 WebSnap 。

Jul.29, Aug.2, 11-01