首页  编辑  

IntraWeb开发学习笔记(三)

Tags: /超级猛料/Web.互联网开发技术/Intraweb/   Date Created:

IntraWeb开发学习笔记(三)

作者:bnPYSse(原创)

最近一段时候,Xalion和我一直忙于书的事情,好在已经有了眉目,而且IntraWeb学习笔记之一、之二的点击量也已超过万次。

期间无数热心的朋友给我来信,一同学习和探讨IntraWeb开发的经验和心得,我也通过Internet结交了很多对Delphi充满了无限热爱的朋友。是Delphi将我们紧紧地联在了一起,是窑洞将我们之间的距离拉近,我非常感谢大家的信任与鼓励。

最近,IntraWeb的新版本v.5.1.22已经发布了,从2月中旬v.5.1.19开始算起,短短一个月时间,IntraWeb竟连续发布了四个不断升级的版本,一方面说明软件还有不成熟、需要改进的地方,一方面说明有相当多热心的开发人员在关注着这个襁褓中的孩子,而且这样的频繁升级,我想,也充分说明这个孩子生命力的无比强大。我们应该对IntraWeb的未来充满信心,就像对Delphi的痴迷一样,IntraWeb也同样令人着迷。

在开发笔记(二)所说的JavaScript以及CSSIntraWeb中的剖析与应用,已在我们的新书中予以细致地阐述,水平有限,但绝对是真诚的心得。希望能够得到大家的认可。

135.1版本的新特征

5.1Beta测试版,已经在内部会员测试了很长时间,这次发布的v.5.1相比于v.5.0可以说有了某些特别引人注目的变化。像不能使用回退按钮的问题、像地址栏显示一长串命令字符的问题、像ActiveX的嵌入开发问题等,都得到了一定程度地解决,可能还有些瑕疵,不过进步还是相当大的。概括起来主要包括以下几大类:

功能方面的改进:执行的效率有了大幅度地提高;WYSIWYG(所见即所得)的HTML编辑器功能更丰富;新的更简单也更强大的Wizard;对浏览器中回退按钮的支持;使用Cookie替代URL来进行会话的跟踪,从而避免了那个长长的URL串;更多的控制选项;更多的客户定制事件。

浏览器方面的改进:一是改进了对Mozilla的支持;一是开始支持Opera

HTML.3.2的支持:可以使开发的程序运行在PDA一类的手持设备上。

文档方面的改进:较为完整的帮助文件,包括所有的组件及其属性、方法等;完整的操作手册,包括如何对应用程序进行移植及FAQ;新的演示程序。应该说这一部分,对开发人员来说比较重要,尽管还有不少不尽如人意的地方,但相较于以前是大大被增强了。

支持HTML4.0标准的组件:其中包括TIWCalendar(基本的日历组件)、TIWProgressBar(显示处理过程进度条组件)、 TIWURLWindow(嵌入IFRAME标记的组件)、TIWActiveX(嵌入处理ActiveX控件)、TIWDBRadioGroup(带数据敏感的收音按钮组件)、TIWImageList(图形列表控制)、TIWQuickTime(嵌入处理QuickTime影片)、TIWMPEG(嵌入处理MPEG影片)、TIWMenu(包括了许多新属性,大家可以试着编译一下其自带的Features演示程序,其主控模块即主要用了一个TIWMenu)、TIWTreeView(树形控件做了较多的修改,并增添了一些新特性)。

支持HTML3.2标准的组件:主要包括:TIWLabel32(标签控制)、TIWEdit32(编辑框)、TIWButton32(按钮)、TIWList32HTML列表)、TIWHRule32HTML水平标尺)、TIWListBox32(列表框)、TIWComboBox32(组合框)、TIWRadioGroup32(收音按钮)、TIWImage32(图像控制)、TIWImageFile32(图像文件控制)、TIWURL32(链接控制)、TIWGrid32(表格控件)、TIWMemo32 HTML中的文本区域控制,亦即备注控件)、TIWText32(文本控件)、TIWRectangle32(矩形控件)、TIWCheckBox32(检查框)、 TIWHyperLink32(链接控件)、TIWDBEdit32(数据敏感编辑框)、TIWDBCheckBox32(数据敏感检查框)、TIWDBComboBox32(数据敏感组件框)、TIWDBLabel32(数据敏感标签控件)、TIWDBListBox32(数据敏感列表框)、TIWDBLookupComboBox32(数据敏感预览组件框)、TIWDBLookupListBox32(数据敏感预览列表框)、TIWDBMemo32(数据敏感备注控件)、TIWDBText32(数据敏感文本控件)、TIWDBImage32(数据敏感图像控件)、TIWDBRadioGroup32(数据敏感收音按钮控件)、TIWTemplateProcessorHTML32(模板处理控件)、TIWPageProducer32(页处理模式下为WebSnap所用的页面生成器控件)、TIWLayoutMgrHTML32HTML布局设计管理器)。所有支持HTML3.2标准的组件在其右上角均带有红色的“IW”标记,而标准的HTML组件,仍旧是青色的“IW”标志,很容易区分的。

IntraWeb标准控件组(支持HTML3.2标准)

IntraWeb数据控件组(支持HTML3.2标准)

top

14Wizard的变化

上面已经说过,5.1版本的Wizard相较于过去有了一些变化。下面来简单地看一下:

点击IntraWeb Application Wizard”,哈哈,原来复杂的东西在这里:

5.1版本的Wizard将原来的内容进行了归类,左侧是应用程序的类型,分为:标准应用程序、服务程序性质的应用、ISAPI应用、支持Apache1.x2.x环境的共享模块共五大类,右侧的可选项包括:是否建立数据模块、是否创建用户Session、是否以HTML3.2标准创建主窗体(可以支持PDA应用)等三项内容。主要的变化是用户SessionHTML3.2标准的支持,其他的东西基本上都差不多。

点击“Create New Form”,也弹出一个对话框,包括:

5.0版本一样,一个是Application Form,一个是Page Form,应用于两种不同的开发模式(在前面的笔记中已经说得很清楚了),同“Create New Application Wizard”一样,也可能以支持HTML3.2标准,用于支持PDA等掌上应用。

总的从第一印象上看,分类更加细致,开发人员应用起来要方便得多了。

top

15、转换老版本应注意的几个问题

如果将过去的应用程序转换到5.1版本下运行,要涉及到几个需要修改的地方。

1TIWImage组件

UseBorder属性已经为BorderOptions属性所代替。

2 RWebApplication

RWebApplication5.1版本中可以视同于WebApplication

3Project文件的变化

5.1版本中,工程文件有了新的格式。标准调试可执行文件现在从标准服务程序工程组中分离出来。用Guess演示程序来看,一个新的标准应用文件如下所示:

program Guess;
uses
 Forms,
 IWMain,
 Main in 'Main.pas' {formMain: TIWFormModuleBase},
 ServerController in 'ServerController.pas' {IWServerController:
 TDataModule};
 {$R *.res}
begin
 Application.Initialize;
 Application.CreateForm(TFormIWMain, formIWMain);
 Application.Run;
end.

当转换成服务类型的应用程序时,需要在DPR文件的uses子句中加入IWInitService,替换后的代码应如下所示:

program GuessService;
uses
 IWInitService,
 Main in 'Main.pas' {formMain: TIWFormModuleBase},
 ServerController in 'ServerController.pas' {IWServerController:
 TDataModule};
 {$R *.res}
begin
 IWRun;
end.

ISAPIDSO工程文件可能会是如下的样子(DPR file:

library GuessDLL;
uses
 IWInitISAPI,
 Main in 'Main.pas' {formMain: TIWFormModuleBase},
 ServerController in 'ServerController.pas' {IWServerController:
 TDataModule};
 {$R *.RES}
begin
 IWRun;
end.

library GuessDSO;
uses
 ApacheApp,
 IWInitApache,
 ServerController in 'ServerController.pas' {IWServerController:
 TIWServerControllerBase},
 Main in 'Main.pas' {formMain: TIWFormModuleBase};
 {$R *.res}
exports
 apache_module name 'GuessDSO_module';
begin
 IWRun;
end.

如果在为Apache2.0环境编译文件,需要确认是否在uses子句包含了IWInitApacheTwo单元。如果是使用向导来创建的Apache2.0的应用,该单元会自动被包含的。需要注意的是:为了使应用模块能否在Apache2.0环境下很好的工作,应当注意Delphi7 VCL控件的最新改动,可以通过Borland Community网站来获取这些最新的更改。

4、对主窗体和Server Controller的改变

对所有不同类型的工程文件(包括标准应用、ISAPIDSO、服务应用),有两个初始化片段是必须要增加的。第一个地方是MainForm,以指明哪个窗体是主窗体。还是以Guess工程文件为例,需要在代码结束之前,加上以下的初始化语句:

initialization
 TformMain.SetAsMainForm;

SetAsMainFormTIWForm的一个过程,当工程文件可以同时支持HTML4.0标准和PDAHTML3.2)标准时,必须有一个初始化片段来指明主窗体。

另外一个初始化的地方就是Server Controller。它都通常如下所示:

initialization
TIWServerController.SetServerControllerClass;

5 OnNewSession的变化

OnNewSession事件句柄在说明文件中有些改变,新的定义为:

OnNewSession(ASession: TIWApplication; var VMainForm: TIWBaseForm);

如果从以前的版本进行转换的话,须确认在ServerControlleruses子句是包括IWBaseFormIWBaseControl两个单元。

6SessionDataModule的拥有者

在以前的版本中(5.1之前),Session的拥有者是ASessionDataModule的拥有者为AOwner。而在5.1版本中,Session已变为nil,DataModuleSelf

7、窗体中起冲突的那些属性

当打开一个5.1版本之前的工程文件时,由于窗体中的好多属性已被重新定义过,可能会引起一些冲突,只需要重新编译文件之彰忽略那些不存在的属性即可。

8、模板处理器的变化

其已经更名为LayoutMgr(外观管理器?),如果在窗体中使用到了TemplateProcessor,应该对其重新进行命名。

top

生性疏散,这篇短短的文字竟打了好几天了,而且还大都是翻译的资料性质的东西,不知道对大家有没有什么用。外语水平有限,欢迎大家批评指正。可以联系我。