IntraWeb 比我相像中的更贴近 VCL, 传统的非可视组件在这里大都可用(其内部很多复合属性是 TStringList 类型的), 它的诸多可视控件也是从 TControl 继承下来的.
这或许是它曾被改名为 VCL For Web 的原因.

建立测试工程时, 一般要使用 StandAlone Application, 这方便调试; 具体发布时只需稍稍修改.


我建立了一个交 MyTest1 的工程, 自动生成的主要文件有: MyTest1.dpr、ServerController.pas、UserSessionUnit.pas、Unit1.pas

MyTest1.dpr


program MyTest1;

uses
IWRtlFix,
Forms,
IWStart,
UTF8ContentParser,
Unit1 in 'Unit1.pas' {IWForm2: TIWAppForm},
ServerController in 'ServerController.pas' {IWServerController: TIWServerControllerBase},
UserSessionUnit in 'UserSessionUnit.pas' {IWUserSession: TIWUserSessionBase}; {$R *.res} begin
TIWStart.Execute(True);
end. {注释}
IWRtlFix //它没有公开任何功能
Forms //还是以前的那个 Forms, 现在叫 Vcl.Forms 了
IWStart //一个 StandAlone 应用是它启动的, 主要提供 Execute 这个 Class 方法
UTF8ContentParser //但愿有了它, IW 不再有乱码的问题
Unit1 //
ServerController //这才是 IntraWeb 工程的核心单元, 每个工程都会在该单元自动建立一个(只有一个) Server Controller 对象, 这个对象统管所有(包括 Session)
UserSessionUnit //该单元主要维护一个 Session 数据对象, 并提供给 ServerController 使用 //这里的代码是自动维护的; 只有在修改发布模式时, 才会来这里做简单的修改(譬如把 program MyTest1 改为 library MyTest1)

UserSessionUnit.pas


unit UserSessionUnit;

interface

uses
IWUserSessionBase, SysUtils, Classes; type
TIWUserSession = class(TIWUserSessionBase)
private
public
end; implementation {$R *.dfm} end. {注释}
//该单元目前只有一个空的 TIWUserSession, 但也已被 ServerController 单元 uses 并使用
//不同的网站程序对用户信息的需求可能不一样(譬如: 登陆信息、购物车信息等等), 我们可以在这里定义需要的数据格式; 因为灵活性很大, 所以关于 Session 的方便操作也是 IW 在宣传时首先要吹嘘的
//在它的窗体上可以放置非可视控件
//TIWUserSessionBase 的父类是我们熟悉的 TDataModule, 所以我说这是 Session 相关的数据模块.

ServerController.pas


unit ServerController;

interface

uses
SysUtils, Classes, IWServerControllerBase, IWBaseForm, HTTPApp,
// For OnNewSession Event
UserSessionUnit, IWApplication, IWAppForm, IW.Browser.Browser; type
TIWServerController = class(TIWServerControllerBase)
procedure IWServerControllerBaseNewSession(ASession: TIWApplication); //TIWServerControllerBase 的 OnNewSession 事件; 在初始化阶段, 该事件就执行了
private
public
end; {下面两个函数类似 Printer(Printers.pas), Clipboard(Clipbrd.pas), 可以让我非常方便地使用最常用的对象; 但要使用它们需 uses ServerController}
function UserSession: TIWUserSession; //
function IWServerController: TIWServerController; //也常常会使用 gServerController、gSC 代替它 implementation {$R *.dfm} uses
IWInit, IWGlobal; //IWInit 提供了 WebApplication (类型是 TIWApplication), 从名字上就能感受到它的重要性
//LWGlobal 提供了 gServerController(可以简写为 gSC) function IWServerController: TIWServerController;
begin
Result := TIWServerController(GServerController); //GServerController = IWGlobal.gServerController; 在这之前它已建立, 这里只是返回一下
end; function UserSession: TIWUserSession;
begin
Result := TIWUserSession(WebApplication.Data); //TIWApplication.Data 专门用于存储 Session 数据
end; {OnNewSession}
procedure TIWServerController.IWServerControllerBaseNewSession(ASession: TIWApplication);
begin
ASession.Data := TIWUserSession.Create(nil, ASession); //从其参数的命名上可以看出 Session 在 TIWApplication 心中的地位; 每个用户都有一个 TIWApplication 实例, 它还有更多功能
end; initialization
TIWServerController.SetServerControllerClass; //这是 TIWServerControllerBase 提供的 Class 方法; 它应该是做了一些必要的初始化工作, 但没有源码看不到. end. //在它的窗体上可以放置非可视控件

Hello IntraWeb


先在 Unit1 的窗体上放三个控件:
IWLabel1;
IWButton1, 并激活其 OnClick 事件;
IWButton2, 并激活其 OnAsyncClick 事件.

{代码}
procedure TIWForm2.IWButton1Click(Sender: TObject);
begin
IWLabel1.Caption := 'Hello IntraWeb - OnClick'; //这是全页面刷新的, 会看到 Loading 图标
end; procedure TIWForm2.IWButton2AsyncClick(Sender: TObject; EventParams: TStringList); //通过 AJAX 技术进行局部刷新
begin
IWLabel1.Caption := 'Hello IntraWeb - OnAsyncClick'; //这是局部刷新的
end;

使用 IntraWeb (2) - Hello IntraWeb的更多相关文章

  1. Delphi XE7 开发ActiveX 及在IntraWeb下调试

    最近学习DelphiXE7下Intraweb开发,Intraweb完全服务器端运行使得FastReport报表系统无法在客户端运行,当然网上也有一大堆解决方案,例如导出到PDF后,给出连接,让客户点击 ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. 使用 IntraWeb (39) - THttpRequest、THttpReply

    在其它服务器脚本语言中熟悉的 Request.Response(THttpRequest.THttpReply) 在 IntraWeb 中算是幕后英雄了, 用户基本不需要直接操作它们了. IW 默认 ...

  9. IntraWeb.v14.0.32安装及破解指南

    一.下载 首先从这里下载14.0.32版本的IntraWeb: 链接:http://pan.baidu.com/s/1c0rjnKO 密码:8kv2 二.卸载旧版 1. 我的Delphi版本是XE6, ...

随机推荐

  1. 最好用的xshell替代软件----FinalShell工具

    2017年8月份NetSarang公司旗下软件家族的官方版本被爆被植入后门着实让我们常用的Xshell,Xftp等工具火了一把,很长时间都是在用Xshell,不过最近发现了一款同类产品FinalShe ...

  2. GraphChi/graphchi-java程序配置

    1.导入graphchi-java maven项目时报错: Plugin execution not covered by lifecycle configuration: org.scala-too ...

  3. plsql免安装客户端的配置

    不安装oracle,在安装了plsql之后,需要连接数据库,连接数据库需要在tns中tnsnames.ora中配置 首先需要两个文件: network instantclient-basic-win3 ...

  4. MFC笔记(DN)

    01:MFC应用程序编程 02:MFC菜单.工具栏.状态栏 03:视图窗口

  5. VIM 配置随手记

    刚开始使用VIM, 主要想用它来写python. 目标是颜色比较舒适, 并且能够自动换行自动补全. .vimrc 设置 这是类似 .bashrc 的配置文件, vim 的各种配置都可以在里面实现. 一 ...

  6. Gson学习记录

    Gson是Google开发来用来序列化和反序列化json格式数据的java库,他最大的特点就是对复杂类型的支持度高,可以完美解决java泛型问题,这得益于他对泛型类型数据的特殊处理,他的缺点就是速度慢 ...

  7. 如何使用optipng压缩png图片

    OptiPNG – Google推荐的png图片无损压缩工具下载及使用教程 2014年08月24日 实用软件 暂无评论 optipng png图片无损压缩工具介绍: optipng png图片无损压缩 ...

  8. python psutil监控系统资源【转】

    通过 运用 Python 第三方 系统 基础 模块, 可以 轻松 获取 服务 关键 运营 指标 数据,包括 Linux 基本 性能. 块 设备. 网卡 接口. 系统 信息. 网络 地址 库 等 信息. ...

  9. linux下安装redis及其中遇到的问题的解决方法

    1.将下载好的压缩包放到/usr/local目录下# tar xzf redis-3.0.2.tar.gz # cd redis-3.0.2 # make 提示错误 make: cc: Command ...

  10. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165301

    2018-2019-2 <网络对抗技术>Exp0 Kali安装 Week1 20165301 安装kali 参考此网站 设置共享文件夹 虚拟机->设置->选项->共享文件 ...