关于Intraweb的几点总结

1、可以添加JavaScript事件代码的组件及其注意事项

IntraWeb版本:5.0

       不难发现,IntraWeb的标准组件大多提供了服务器端运行的事件,如TIWButton就提供了OnClick事件。然而,如果在这样的事件中处理逻辑,会引发页面的刷新,即不必要的服务器。当不需要与服务器端交互时,我们就可以用到一些组件的ScriptEvents属性,添加自定义的JavaScript来处理这样的事件,而不刷新页面。

1)  提供了ScriptEvents属性的标准组件。

注:下面给出的组件列表基于IntraWeb 5 for Delphi7

TIWButtonTIWCheckBoxTIWComboBoxTIWEditTIWFileTIWImageTIWImageFileTIWListBoxTIWLinkTIWMemoTIWUrl

2)  2点要注意的

第一, Sender参数的应用。

JavaScript事件的处理函数,均通过参数ASender来指代触发事件的页面组件对象。所以在书写的JavaScript代码中要访问该对象时,就要用到ASender了。

第二, 对页面组件的引用。

如果要在JavaScript中用到页面中组件,不能像Delphi中直接通过名称来访问,而需通过下面的方式:

document.getElementById(“[组件名称]”)

也就是说,在执行时,组件会被翻译成id属性为设计期给定的组件名称的HTML元素,且在HTML中组件名称都是大写。

但也有例外,如TIWRegion,你在HTML代码中是找不到以它的名称命名的页面元素的,事实上,TIWRegionTIWRectangle都是被翻译成Table的,而TIWRegion对象,则是按顺序被翻译成“TIWRECTANGLE[序号]”,如我们在设计期的窗体上放置3TIWRegion组件,分别命名为“iwrSample1”,“iwrSample2”和“iwrSample3”,则它们在HTML代码中就变成了下面的样子:

<table id="TIWRECTANGLE1">

  <tr>

    <td></td>

  </tr>

</table>

<table id="TIWRECTANGLE2">

  <tr>

    <td></td>

  </tr>

</table>

<table id="TIWRECTANGLE3">

  <tr>

    <td></td>

  </tr>

</table>

2、对bnPYSse《Intraweb学习笔记》中提到的“模板文件”问题的补充

谈到Intraweb,bnPYSse的《学习笔记》在网上比较“出名”,下面是对他提到的模板文件问题的一点补充。

IntraWeb版本:5.0

       bnPYSse提到,模板文件的名称必须与窗体名称相同且扩展名必须为“.html”,这是欠妥的。因为我们应用模板文件必须通过TIWTemplateProcessorHTML,而该组件的属性Templates就提供了灵活配置模板文件的途径,该属性有3个分项:

       Default-默认模板的名称

IE-IE浏览器下模板的名称

Netscape6-Netscape6浏览器下模板的名称

       由此可见,IntraWeb不但提供了自定义模板名称的方法,而且还提供了适应不同浏览器的途径。当然,如果不对该属性进行设置的话,bnPYSse说法还是正确的。

       另外,关于模板文件的标签,对于TIWRegion对象,在模板文件中是无法自动解析的。需要通过TIWTemplateProcessorHTMLOnUnknownTag事件来处理。

3TreeView的问题

IntraWeb版本:5.0

       5.0版本的TIWTreeView存在下面几点缺陷:

1)  刷新问题:节点单击总要刷新页面,不提供客户端JavaScript事件的处理,且刷新后不保留树的状态,如本来合起来的节点,会再一次打开。

2)  大小问题:当页面大小改变时,树的工作空间不会改变,即使设定了Anchors属性。

注:这些问题在最新版本(9.0)的IntraWeb中都得到了解决。
delphi / c++ builder 10.1 Berlin 安装Intraweb 14.1.5,仅供学习研究使用 说明:仅供学习研究使用 安装程序太大无法上传,请先到http://www.atozed.com下载iw14.1.5.exe 本人用的是Embarcadero RAD Studio 10.1 Berlin up2 1. 打开IDE,Component / Install Packages...,选择旧版本Intrawebxxxx.bpl,Remove. 2.用IWBundledRemovalTool工具将旧版本文件删除(如果没有此工具可从网上下载或先随便安装一个版本,把此工具复制出来)。 3.如果需要用bcb开发由进行这一步,如只需要用delphi开发则可跳过这步, 将C:\Program Files (x86)\Embarcadero\Studio\18.0\include\windows\vcl目录下IW*.hpp删除。 4.如果需要用bcb开发由进行这一步,如只需要用delphi开发则可跳过这步,本人前几次安装都没有成功, 后面增加了这步,不知道此步是否必须, 将C:\Program Files (x86)\Embarcadero\Studio\18.0\include\windows\vcl目录下, 从InAntiFreezeBase.hpp开始选中到InYarn.hpp,然后将这些文件删除。 5.运行iw14.1.5.exe安装,安装时输入如下LicenseKey(这个号也是网上找到的,由于找了一天也不记得在哪找到的了,感谢作者提供): +0010AAIACIABCAACABCACGABCABAAAGACGABCAAGABEAAEABEABIABEAAGABEAAIABCAACABCACEABEABGABEAAAAAAACGAAAACAAAIAAGABCADAABCACGABEAAAABCAACABCACIABEABIAAGACGAAIAACABEAAIABCADAABEACAABCABAABCAAIAAEAAAABAAAGABCADAABCABCABEAAIABEABEABCAACABEAAEABCABAAAAACGAAAACAAAIAAIABCABAABEABCABCABAABCACEABCADAABEAAAABCABAABEAAEAAGACGABCAAGABEAAEABEABIABEAAGABEAAIABCAACABCACEABEABGABEAAAAAAACGAAAACAAAIABAABEABGABEAAAABCABIABEAAEABCAACABEAAIABCABIABCADAABCACIAAGACGAAGABAAAGABGAAGABCAAGAAAAAGABGAAAACGAAAACAAAIABAABCAAIABCABIABEAAIABCABIABCADAABCACIAAGACGAAIABAAAIACIABAAAIAAAACGAAAACAABAAAGABCABAABEAAEABCABIABCAACABCACEAAIACIABCADAAAGACGAAGAAEAAGAAAAAGAACAAGABCAAGABAAAGAAAAAGABCAAGABGAAGABGAAAACGAAAACAAAIABAABCACGABCAACABCABIABCACEAAGACGAAAACGAAAACAAAIABGABCAACABEAAGABCABGAAGACGAAAACGAAAACAAAHAEDAAFACI 6.安装完成后如果选中License Registration则同样输入上面的LicenseKey。 7.先启动Delphi 10.1 Berlin IDE,Tools/Options,将iw14.1.5.exe安装目录(本人安装到C:\Program Files (x86)\IntraWeb XIV)下的LibD10_1W32、LibD10_1W64、Source三个目录添加到Library Path和Browsing Path。 8.随便创建一个Intraweb应用,选择win32平台,然后运行,报错后修改IWLicenseKey.pas: 将SetLicenseKey(xxxxxxxxxxxxxxxxxx改为: SetLicenseKey( '+0010AAIACIABCAACABCACGABCABAAAGACGABCAAGABEAAEAB'+ 'EABIABEAAGABEAAIABCAACABCACEABEABGABEAAAAAAACGAAA'+ 'ACAAAIAAGABCADAABCACGABEAAAABCAACABCACIABEABIAAGA'+ 'CGAAIAACABEAAIABCADAABEACAABCABAABCAAIAAEAAAABAAA'+ 'GABCADAABCABCABEAAIABEABEABCAACABEAAEABCABAAAAACG'+ 'AAAACAAAIAAIABCABAABEABCABCABAABCACEABCADAABEAAAA'+ 'BCABAABEAAEAAGACGABCAAGABEAAEABEABIABEAAGABEAAIAB'+ 'CAACABCACEABEABGABEAAAAAAACGAAAACAAAIABAABEABGABE'+ 'AAAABCABIABEAAEABCAACABEAAIABCABIABCADAABCACIAAGA'+ 'CGAAGABAAAGABGAAGABCAAGAAAAAGABGAAAACGAAAACAAAIAB'+ 'AABCAAIABCABIABEAAIABCABIABCADAABCACIAAGACGAAIABA'+ 'AAIACIABAAAIAAAACGAAAACAABAAAGABCABAABEAAEABCABIA'+ 'BCAACABCACEAAIACIABCADAAAGACGAAGAAEAAGAAAAAGAACAA'+ 'GABCAAGABAAAGAAAAAGABCAAGABGAAGABGAAAACGAAAACAAAI'+ 'ABAABCACGABCAACABCABIABCACEAAGACGAAAACGAAAACAAAIA'+ 'BGABCAACABEAAGABCABGAAGACGAAAACGAAAACAAAHAEDAAFAC'+ 'I'); 再次运行成功,这样以后就可以开发非体验版的win32 Intraweb应用了。 9.同样再次随便创建一个Intraweb应用,选择win64平台,运行报错后同样 修改IWLicenseKey.pasSetLicenseKey(xxxxxxxxxxxxxxxxxx改为: SetLicenseKey( '+0010AAIACIABCAACABCACGABCABAAAGACGABCAAGABEAAEAB'+ 'EABIABEAAGABEAAIABCAACABCACEABEABGABEAAAAAAACGAAA'+ 'ACAAAIAAGABCADAABCACGABEAAAABCAACABCACIABEABIAAGA'+ 'CGAAIAACABEAAIABCADAABEACAABCABAABCAAIAAEAAAABAAA'+ 'GABCADAABCABCABEAAIABEABEABCAACABEAAEABCABAAAAACG'+ 'AAAACAAAIAAIABCABAABEABCABCABAABCACEABCADAABEAAAA'+ 'BCABAABEAAEAAGACGABCAAGABEAAEABEABIABEAAGABEAAIAB'+ 'CAACABCACEABEABGABEAAAAAAACGAAAACAAAIABAABEABGABE'+ 'AAAABCABIABEAAEABCAACABEAAIABCABIABCADAABCACIAAGA'+ 'CGAAGABAAAGABGAAGABCAAGAAAAAGABGAAAACGAAAACAAAIAB'+ 'AABCAAIABCABIABEAAIABCABIABCADAABCACIAAGACGAAIABA'+ 'AAIACIABAAAIAAAACGAAAACAABAAAGABCABAABEAAEABCABIA'+ 'BCAACABCACEAAIACIABCADAAAGACGAAGAAEAAGAAAAAGAACAA'+ 'GABCAAGABAAAGAAAAAGABCAAGABGAAGABGAAAACGAAAACAAAI'+ 'ABAABCACGABCAACABCABIABCACEAAGACGAAAACGAAAACAAAIA'+ 'BGABCAACABEAAGABCABGAAGACGAAAACGAAAACAAAHAEDAAFAC'+ 'I'); 就可以了。 10.至此delphi下的Intraweb已安装完成,但是如果用C++ Builder开始Intraweb应用, 还是评估版本,程序每次运行端口都会变化此界面上提示是评估版本, 本人的方法是将iw14.1.5.exe的程序目录(本人安装到C:\Program Files (x86)\IntraWeb XIV), 将LibD10_1W32下的IWLicenseKey.pas添加c++ Builder 32位应用中, 那么64位应该就是将LibD10_1W64下的IWLicenseKey.pas添加到c++ Builder 64位应用中,不过本人没有进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值