为什么80%的码农都做不了架构师?>>>   

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

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



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

MyTest1.dpr


program MyTest1;usesIWRtlFix,Forms,IWStart,UTF8ContentParser,Unit1 in 'Unit1.pas' {IWForm2: TIWAppForm},ServerController in 'ServerController.pas' {IWServerController: TIWServerControllerBase},UserSessionUnit in 'UserSessionUnit.pas' {IWUserSession: TIWUserSessionBase};{$R *.res}beginTIWStart.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;interfaceusesIWUserSessionBase, SysUtils, Classes;typeTIWUserSession = class(TIWUserSessionBase)privatepublicend;implementation{$R *.dfm}end.{注释}
//该单元目前只有一个空的 TIWUserSession, 但也已被 ServerController 单元 uses 并使用
//不同的网站程序对用户信息的需求可能不一样(譬如: 登陆信息、购物车信息等等), 我们可以在这里定义需要的数据格式; 因为灵活性很大, 所以关于 Session 的方便操作也是 IW 在宣传时首先要吹嘘的
//在它的窗体上可以放置非可视控件
//TIWUserSessionBase 的父类是我们熟悉的 TDataModule, 所以我说这是 Session 相关的数据模块.


ServerController.pas


unit ServerController;interfaceusesSysUtils, Classes, IWServerControllerBase, IWBaseForm, HTTPApp,// For OnNewSession EventUserSessionUnit, IWApplication, IWAppForm, IW.Browser.Browser;typeTIWServerController = class(TIWServerControllerBase)procedure IWServerControllerBaseNewSession(ASession: TIWApplication); //TIWServerControllerBase 的 OnNewSession 事件; 在初始化阶段, 该事件就执行了privatepublicend;{下面两个函数类似 Printer(Printers.pas), Clipboard(Clipbrd.pas), 可以让我非常方便地使用最常用的对象; 但要使用它们需 uses ServerController}
function UserSession: TIWUserSession;             //
function IWServerController: TIWServerController; //也常常会使用 gServerController、gSC 代替它implementation{$R *.dfm}usesIWInit, IWGlobal; //IWInit   提供了 WebApplication (类型是 TIWApplication), 从名字上就能感受到它的重要性//LWGlobal 提供了 gServerController(可以简写为 gSC)function IWServerController: TIWServerController;
beginResult := TIWServerController(GServerController); //GServerController = IWGlobal.gServerController; 在这之前它已建立, 这里只是返回一下
end;function UserSession: TIWUserSession;
beginResult := TIWUserSession(WebApplication.Data); //TIWApplication.Data 专门用于存储 Session 数据
end;{OnNewSession}
procedure TIWServerController.IWServerControllerBaseNewSession(ASession: TIWApplication);
beginASession.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);
beginIWLabel1.Caption := 'Hello IntraWeb - OnClick'; //这是全页面刷新的, 会看到 Loading 图标
end;procedure TIWForm2.IWButton2AsyncClick(Sender: TObject; EventParams: TStringList); //通过 AJAX 技术进行局部刷新
beginIWLabel1.Caption := 'Hello IntraWeb - OnAsyncClick'; //这是局部刷新的
end;

转载于:https://my.oschina.net/hermer/blog/319342

使用 IntraWeb (2) - Hello IntraWeb相关推荐

  1. intraweb php,使用 IntraWeb (40) - 自定义 Session 数据

    修改 UserSessionUnit 单元:unit UserSessionUnit; interface uses   IWUserSessionBase, SysUtils, Classes, I ...

  2. Delphi 10.3 Web应用开发B/S框架介绍(二):IntraWeb 17

    导言:很多人想当然的认为Delphi不能开发B/S WEB应用,其实Delphi发展到现在10.3,一直在不断的进步,Delphi不但巩固了Windows本机软件开发领域的王者地位,更扩展到了安卓.I ...

  3. 使用 IntraWeb (8) - 系统模板

    我们可以自定义系统错误模板, 编辑 IWError.html 放到模板文件夹后, 它将替换默认的模板. {在主页面, 这是要模拟一个系统错误} procedure TIWForm1.IWButton1 ...

  4. 使用 IntraWeb (36) - TIWServerControllerBase

    每个应用须有且只有一个 Server Controller. TIWServerControllerBase 所在单元及继承链: IWServerControllerBase.TIWServerCon ...

  5. 自己去年用intraweb写的模仿动网论坛的原程序,用的是动网论坛的数据库

    自己去年用intraweb写的模仿动网论坛的原程序,用的是动网论坛的数据库 动网个人服务器系统1.0 可以在不安装iis的情况下,在win98,win2000,winxp跑动网论坛 使用时,只需将动网 ...

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

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

  7. tms intraweb html5,TMS VCL Chart

    TMS VCL Chart是具有DB意识和非DB意识的功能丰富的图表组件,用于商业,统计,财务和科学数据!可作为Win32 / Win64应用程序开发的VCL组件集使用,也可与Web(IntraWeb ...

  8. Intraweb之EasyUI篇

    Intraweb一直是Delphi快速开发web应用的首选工具,但自带的控件较少,样式比较难看,TMS与IW倒是可用,可是要收费,对于我们这些习惯用免费的用户来说,想找个破解也比较费劲.EasyUI是 ...

  9. IntraWEB Ultimate 15.2.20是Delphi自带的一套Web开发框架

    IntraWEB Ultimate 15.2.20是Delphi自带的一套Web开发框架 IntraWeb是Delphi自带的一套Web开发框架,使用IntraWeb能够让开发人员比以往更快,更容易地 ...

最新文章

  1. (正)斜杠 与 反斜杠
  2. [zz]Linux 下 socket 编程示例
  3. Windows驱动开发VXD/WDM/WDF/DDK/WDK的联系和区别
  4. 1 MySQL 主从同步
  5. ubuntu下vim配置成c++开发编辑器
  6. Deqin-python计算器
  7. 怎么更改坐标轴标题access_excel图表如何修改x坐标轴数值,excel怎么设置横坐标标题...
  8. 使用Python来计算均值、中位数、标准差
  9. Python 粒子群算法 PSO
  10. 《因子投资 - 方法与实践》新书上市
  11. python简单代码画皮卡丘-用python画一只可爱的皮卡丘
  12. 京东上的神器,评论区的问答蛮搞的
  13. 矩阵分解算法与因子分解机
  14. c primer plus第五版勘误
  15. 【单片机毕业设计】基于单片机的空气质量(烟雾、天然气或煤气、CO、有害混合气体)检测系统的设计
  16. html图片沿y轴转换,html-使用CSS水平翻转/垂直翻转/镜像图像
  17. Egret蛮牛游戏引擎入门和开发(官方版)
  18. 怎么破解通达信接口?
  19. 美摄科技云剪辑,助力哔哩哔哩使用体验再升级
  20. hdu 4007 Dave 求矩形圈点最大值

热门文章

  1. jquery中几种层级选择器的详细说明
  2. 2010年的最后一天,我又辞工(日记)
  3. OpenCV统计应用-CvHistogram直方图资料
  4. 为什么需要使用Git客户端?
  5. Tensorflow(r1.4)API--tf.truncated_normal()
  6. cad图纸怎么看懂_CAD图纸太大,打开的时候很卡怎么办?教你如何给图纸瘦身
  7. 用计算机得到圣诞树,圣诞树、标签系统和计算思维
  8. pycharm自定义代码片段
  9. 仅需6道题轻松掌握SciPy空间计算基础 | Python技能树征题
  10. java逐行读取文件_Java逐行读取文件