IW 通过 TIWLayoutMgrHTML 和 TIWTemplateProcessorHTML 使用 HTML 模板.

所谓模板就是一个特殊 HTML 文件, 特殊之处是: 它里面会类似 {% IW控件名称 %} 的标记.

这类似与 Format 函数中的 %s 等, 但 IW 要高级的多, 被重新布局的控件还要维持其功能.


TIWLayoutMgrHTML、TIWTemplateProcessorHTML 的区别在于, 前者使用内嵌的 Html 代码, 后者使用 Html 文件.


测试一: 使用 TIWLayoutMgrHTML


先在空白窗体上添加 IWEdit1、IWEdit2、IWButton1 和 TIWLayoutMgrHTML;

然后给 IWButton1.OnClick 写句测试代码:

procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
WebApplication.ShowMessage(IWEdit1.Text + sLineBreak + IWEdit2.Text);
end;

然后编辑 TIWLayoutMgrHTML 的 Html 属性; 这是我测试用的简单代码(其中包含了前面三个控件名):

户名:{%IWEdit1%}

密码:{%IWEdit2%}

{%IWButton1%}


最后, 指定窗体的 LayoutMgr 属性为 IWLayoutMgrHTML1.

完成, 运行效果图:




测试二: 在 TIWRegion 中使用模板


就在上面的基础上修改下吧, 步骤:

1. 先添加 IWRegion1
2. 把刚才的 IWEdit1、IWEdit2、IWButton1 复制到 IWRegion1
3. 设置 IWRegion1 的 LayoutMgr 属性为 IWLayoutMgrHTML1
4. 清空窗体的 LayoutMgr 属性(它们不能使用同一个模板)

运行效果图:




测试三: 使用 TIWTemplateProcessorHTML


步骤:

1. 先在当前程序(exe)所在目录建立名为 Templates 模板文件夹, 然后把上面的 Html 测试代码存成名为 IWForm1.html 的文件(使用 UTF8 格式)到 Templates 下.
注释: Templates 的位置与名称是 IW 的约定, 这可以通过 IWServerController.TemplateDir 查看或修改.
注释: 模板名称(当前窗体名.html)也是 IW 的默认约定, 可通过 IWTemplateProcessorHTML1.Templates.Default 修改; 也可通过这个属性动态变换模板.

2. 设置窗体的 LayoutMgr 属性 IWTemplateProcessorHTML1.

3. 注意: 从上面测试下来, 现在 IWEdit1、IWEdit2、IWButton1 还在 IWRegion1 中, 现在有两种选择:
最简单的就是把 IWEdit1、IWEdit2、IWButton1 复制出来放到窗体上.
或者是把 IWForm1.html 中的 {%IWEdit1%}、{%IWEdit2%}、{%IWButton1%} 修改为 {%IWRegion1.IWEdit1%}、{%IWRegion1.IWEdit2%}、{%IWRegion1.IWButton1%}

4. 运行效果同前.


如果继续测试 TIWRegion 使用 TIWTemplateProcessorHTML, 它默认识别的名称也是 IWForm1.html(窗体名.html).

在测试中碰到一个问题:
我在使用 VS 编辑 Html 时, 它自动生成的 <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> IW 不认识, 改为 <html> 就好了.


使用 IntraWeb (6) - 页面模板: TIWLayoutMgrHTML、TIWTemplateProcessorHTML的更多相关文章

  1. 使用 IntraWeb (28) - 基本控件之 TIWTemplateProcessorHTML、TIWLayoutMgrHTML、TIWLayoutMgrForm

    TIWTemplateProcessorHTML //使用外部的 html 文件做模板 TIWLayoutMgrHTML //直接输入 Html 文本做模板 TIWLayoutMgrForm //这应 ...

  2. 使用 IntraWeb (7) - 主模板

    TIWLayoutMgrHTML.TIWTemplateProcessorHTML 属于页面级的模板, 如果要全站统一模板, 当然要用主模板. TIWTemplateProcessorHTML 通过其 ...

  3. 使用 IntraWeb (45) - 活用 IntraWeb

    asp.net 刚开始时, 也是拖拉控件, 但后来有了 MVC.xNext. 换个思路使用 IntraWeb 吧: 界面全部用 html+js+css 实现(有些会是用 Delphi 动态生成), 然 ...

  4. IntraWeb XIV 类型速查表

    tkClass ================== IWUserSessionBase.TIWUserSessionBase < TDataModule < TComponent < ...

  5. 使用delphi+intraweb进行微信开发4—微信消息加解密

    示例代码已经放出!请移步使用delphi+intraweb进行微信开发1~4代码示例进行下载,虽为示例代码但是是从我项目中移出来的,封装很完备适于自行扩展和修改. 在上一讲当中我做了个简单的微信文本消 ...

  6. 使用delphi+intraweb进行微信开发3—微信消息处理

    示例代码已经放出!请移步使用delphi+intraweb进行微信开发1~4代码示例进行下载,虽为示例代码但是是从我项目中移出来的,封装很完备适于自行扩展和修改. 在第二讲使用delphi+intra ...

  7. 使用delphi+intraweb进行微信开发2—intraweb以.net方式发布(以asp.net mvc4模式部署)在IIS(.net虚拟主机)上

    在第一讲使用delphi+intraweb进行微信开发1--微信平台接入中我们编写了一个简单的微信接口程序,这个程序我是用Stand Alone Server / Service 方式编译的程序,并且 ...

  8. 使用delphi+intraweb进行微信开发1--微信平台接入

    示例代码已经放出!请移步使用delphi+intraweb进行微信开发1~4代码示例进行下载,虽为示例代码但是是从我项目中移出来的,封装很完备适于自行扩展和修改. iw14.0.50来了,在新的版本中 ...

  9. 使用 IntraWeb (42) - 测试读取 SqLite (一)

    为通过 FireDAC(XE5开始支持的) 使用 SqLite, 现在已换成 XE6 + IntraWeb v14.0.32 Ultimate. 首先把官方提供的 C:\Users\Public\Do ...

随机推荐

  1. 《Linux命令行与shell脚本编程大全》 第五章理解shell

    5.1 1. cat /etc/passwd 可以查看每个用户自己的默认的shell程序. 2.默认的交互shell会在用户登录某个虚拟控制台终端时启动. 不过还有另外一个默认的shell是/bin/ ...

  2. 01 uni-app框架学习:项目创建及底部导航栏tabBar配置

    1.创建一个项目类型选择uniapp 2. pages里新建3个页面如下 3.在pages.json中配置底部导航tabBar 效果展示:

  3. vue-cli 3.0 开启 Gzip 方法

    vue.config.js const path = require('path') const CompressionWebpackPlugin = require('compression-web ...

  4. RabbitMQ集群下队列存放消息的问题

    RabbitMQ中队列有两种模式 1.默认 Default 2.镜像 Mirror [类似于mongoDB,从一直在通过主的操作日志来进行同步] *如果将队列定义为镜像模式,那么这个队列也将区分主从, ...

  5. Tomcat优化步骤【转】

    一.Tomcat的缺省是多少,怎么修改 Tomcat的缺省端口号是8080.修改Tomcat端口号:1.找到Tomcat目录下的conf文件夹2.进入conf文件夹里面找到server.xml文件3. ...

  6. 公共语言运行库(CLR)开发系列课程(3):COM Interop基础 学习笔记

    上章地址 什么是COM Component Object Model 组建对象模型 基于接口(Interface) 接口=协议 IID 标识接口 V-table 虚表 方式调用 单继承 对象(Obje ...

  7. APMServ5.2.6win10系统Apache、MySQL5.1启动失败解决办法

    今天想在本地测试网站源码能否正常运行,如果可以就转空间了,然而下载了APMServ之后发现系统Apache.MySQL5.1启动均失败,小白的人表示只能借助百度,用了一个小时的时间终于解决了,虽然坎坷 ...

  8. csu 1982:小M的移动硬盘(双向链表)

    Description 最近小M买了一个移动硬盘来储存自己电脑里不常用的文件.但是他把这些文件一股脑丢进移动硬盘后,觉得这些文件似乎没有被很好地归类,这样以后找起来岂不是会非常麻烦? 小M最终决定要把 ...

  9. rpm包软件管理

    一.rpm介绍 linux服务器中所有的软件包安装方式有两种,一种是源码安装.另一种是二进制包安装(rpm)源码包安装的好处是适合不同的发行版本的linux,缺点是在编译过程中花费的时间很长,二进制包 ...

  10. 【Atcoder】ARC102 题解

    C - Triangular Relationship 题解 枚举一个数%K的值然后统计另两个 代码 #include <bits/stdc++.h> #define enter putc ...