使用IntraWeb进行Web编程

使用IntraWeb进行Web编程
《Delphi从入门到精通》第21章 第一部分
概述
自Delphi2以后,Chad Z. Hower就一直在为建立一种简化Web程序开发的Delphi架构而努力,这种简化的核心思想就是使开发Web程序像开发普通窗口程序一样简单并且可视化。一些程序员了解动态HTML、JavaScript、 Cascading Style Sheets和最新的互联网技术;而另一些程序员则想像创建VCL和CLX应用程序那样创建Web程序。
IntraWeb就是应第二种开发者的需求而问世的,她功能强大,即便是专业的Web程序员也能够从中受益。用Chad的话来说,IntraWeb是用来开发Web程序而不是用来创建网站的。此外,IntraWeb组件可用于特有的应用程序或者是WebBroker 和 WebSnap应用程序。
在本章我不能详述IntraWeb的每一个细节,因为安装后,在Delphi上分布于数个组件板共计50个组件之多,实在太大了。我计划讲解一下基础内容,您可以有选择地用于您手头的项目或是那些项目中的部分内容。
提示:在Delphi7光盘中有IntraWeb的PDF版手册。如果您找不到,可以到Atozed Software公司的网站上去下载。关于IntraWeb的技术支持,可以参考Borland的新闻组。
IntraWeb简介
IntraWeb是Atozed Software公司出品的组件库。在Delphi7的专业版和企业版中有相应版本的IntraWeb。专业版的IntraWeb只能用于页模式(Page mode),关于页模式本章稍后将会提到。尽管Delphi7是Borland公司的第一版包含该组件集的集成开发环境,但IntraWeb已经发展有几年了,受到了相当好的评价和支持,包括很多第三方组件开发商。
提示:
尽管您不能得到核心源代码(需购买),IntraWeb体系架构是完全开放的。并且所有组件的源代码随意可得。虽然IntraWeb是Delphi标准安装的一部分,但同样适用于Kylix。只要小心编写,IntraWeb程序完全可以实现跨平台的。
注:除了Delphi 和Kylix版外,IntraWeb还有C++ Builder和Java版。.Net版正在开发中,将会随Delphi for .Net(Delphi 8)一起发布。
如果您拥有正版Delphi7,你完全能够收到一个重大的升级信息,并且可以升级到IntraWeb5.1企业版,包括升级文档和技术支持。(目前版本为7.19——译者)
从网站到Web程序
正如前面所讲,IntraWeb背后的思想是构建Web程序而不是网站。当您使用WebBroker和WebSnap时,你以Web pages和Page Producers术语在思考,同时您的工作紧紧地和HTML层次的网页制作联系在一起。而用IntraWeb时,您想的是组件、属性和事件,就像是在Delphi中作可视开发一样。
比如,创建一个新的IntraWeb应用程序,选择File ® New ® Other,在新项目对话框中移到IntraWeb页,然后选择Stand Alone Application。在接下来的对话框中(此对话框是Delphi的而不是IntraWeb的向导)你可以选择一个已经存在的文件夹或是输入一个新文件夹(系统会自动创建,之所以在此提及,是因为该对话框不是很清楚)。最终的程序包含一个项目文件和两个不同的单元(稍后我会讲到它的结构)。
现在,让我们创建一个例程(随书源代码中叫做IWSimpleApp),步骤如下:
1、 移到程序的主窗体,从组件板中的IW Standard页中选择一个按钮,一个文本编辑框和一个列表框添加到窗体。注意不是组件板中Standard页中的VCL组件,而是相应的IntraWeb组件:IWButton,IWEdit和IWListbox。
2、 像下面那样调整它们的属性:
object IWButton1: TIWButton
Caption = ‘Add Item‘
end
object IWEdit1: TIWEdit
Text = ‘four‘
end
object IWListbox1: TIWListbox
Items.Strings = (
‘one‘
‘two‘
‘three‘)
end

3、 双击按钮组件编写OnClick事件,代码如下:
procedure TformMain.IWButton1Click(Sender: TObject);
begin
IWListBox1.Items.Add (IWEdit1.Text);
end;

如图21.1所示的web程序(图中所示的是多两个按钮的最终版本)能够把文本添加到列表框,创建它仅需这几步。当你运行该程序时需要注意的是你每次单击按钮,浏览器都会向程序发送一个新的请求,该请求将会驱动Delphi事件句柄产生一个新的基于窗体上组件新状态的HTML页。
当您执行该程序时,您看不到程序输出的浏览器,而是一个IntraWeb控制器窗口(见图21.2)。一个stand-alone IntraWeb应用程序是一个HTTP服务器,这一点在下一部分里会有详细的阐述。您所看到的这个窗口是由每个stand-alone IntraWeb应用程序的项目文件中默认创建的IWRun函数来调用管理的。您可以在该调试窗口中选择一个浏览器,并通过它来运行程序,或者把URL拷贝到剪切板,然后粘贴到您的浏览器中。程序默认使用一个随机端口,该端口每次执行都不相同,因此,每次执行时的URL都不同。您可以通过选择服务器设计器(有点像数据模块)设定port端口属性来改变这种行为。在该例中我用的是8080(一个普通的HTTP端口),当然,其他值也可以。
IntraWeb程序的代码主要在服务器端,但IntraWeb也能够产生JavaScript来控制程序的一些特性,因此在客户端也可以执行特别的代码。您可以通过使用特别的客户端组件或者写一些特别的JavaScript代码来实现。作为一个比较,下面例程IWSimpleApp中的两个按钮通过不同的方法实现显示一个消息框。
两个按钮中的IWButton2使用Delphi代码利用服务器端事件来显示一个消息框。
procedure TformMain.IWButton2Click(Sender: TObject);
var
nItem: Integer;
begin
nItem := IWListbox1.ItemIndex;
if nItem >= 0 then
WebApplication.ShowMessage (IWListBox1.Items [nItem])
else
WebApplication.ShowMessage (‘No item selected‘);
end;


这两个按钮中的第二个(IWButton3)使用了JavaScript,这是通过在按钮的ScriptEvents属性的属性编辑器中正确地设置JavaScript事件句柄来实现在Delphi程序中嵌入JavaScript的。

IntraWeb事件脚本编辑器
初探幕后
看到了吧,创建一个IntraWeb应用程序就和创建一个基于窗体的Delphi应用程序一样简单:在窗体上放置组件然后处理它们的事件。当然,效果是不同的,毕竟这样的程序是运行在浏览器中。为了让您明白到底是怎样工作的,我们简要地看一下这个简单的程序背后。这样做会帮助您理解设置组件属性和使用组件编程的效果。
这是一个基于浏览器的程序,因此没有什么比看一下程序送到浏览器的HTML代码能更好地理解它工作机制的方式了。打开IWSimpleApp程序源代码页,会发现分成了三部分。第一部分是类似下面的样式列表:
.IWEDIT1CSS {position:absolute;left:40;top:40;z-index:100;
font-style:normal;font-size:10pt;text-decoration:none;}
IntraWeb使用样式不仅能确定每个组件的外观,如字体和颜色,而且能够确定组件的位置,默认方式是相对位置定位。每个样式受组件的很多属性影响,如果您有样式表的知识,您可以简单地试验一下;如果不熟悉样式表,那就相信IntraWeb吧,它会把组件在web页上绘制得很好。
The second block consists of JavaScript scripting. The main script block contains initialization code and the code of client-side event handlers for the components, like the following:
第二块包含了JavaScript的描述。主要的脚本块包含初使化代码和组件的客户端事件处理代码,例如:
function IWBUTTON1_OnClick(ASender) {
return SubmitClickConfirm(‘IWBUTTON1‘,‘‘, true, ‘‘);
}
The scripting section of the page has also references to other files required by the browser and made available by IntraWeb. Some of these files are generic; others are tied to the specific browser: IntraWeb detects the browser being used and returns different JavaScript code and base JavaScript files.
脚本还涉及一些浏览器需要的由IntraWeb产生的其他文件。这些文件有些是通用的,而有些是捆绑给特定的浏览器的:IntraWeb能够探测出所用浏览器,从而返回不同的JavaScript代码和基本JavaScript文件。
注意:因为不是所有浏览器都能识别JavaScript的,所以IntraWeb只支持部分浏览器。支持的浏览器有最新版的Microsoft Internet Explorer、Netscape Navigator和开放源代码的 Mozilla (我用的就是)。由于Opera支持JavaScript更有限,所以默认情况下如被识别,IntraWeb就会发出一个错误信息(依赖于controller的SupportBrowsers属性)。Opera能够和免费的Arcana组件一起使用,在IW 5.1版中被正式支持。记住浏览器可能会伪造身份:比如,Opera常常被认成IE。为使站点不受浏览器的限制,设置支持更多的浏览器,却又可能会导致运行错误和矛盾。
第三部分
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值