分享

IntraWeb 用户访问

 独孤求财 2012-03-14

IntraWeb 用户访问

时间:2011-5-30来源:yang 作者: peng点击: 20次

  IntraWeb程序多用户访问可以分成两种,一种是用数据模块DM的,一种是没有用DM的,
一、先说用DM的情况,当你创建IW程序时选择了DM时,把你需要用到数据访问控件如ADOConnection,ADODATAset,ADOQuery放到DM的FORM上,从工程选择里移除DM的自动创建,
然后打开单元UseSessionUnit,引用uses dataModuleUnit;在public部分申明DM:TDataModule;
在IWUseSession上双击,在procedure TIWUserSession.IWUserSessionBaseCreate(Sender: TObject);事件里写入
procedure TIWUserSession.IWUserSessionBaseCreate(Sender: TObject);
begin
DM:=TDataModule.create(WebApplication);
end;
引用 如下:
uses ServerController;//注意不是UseSessionUnit;原因 下面解释
Procedure TIWForm1.IWButton1Click(Sender:TObject);
begin
UseSession.DM.AdoDataSet1.connection:=ADOConnection;
end;
二、不用DM的情况,这种情况最简单了(本人推荐使用),创建IW工程时不选择数据模块( 弹出选项界面时直接[确定]),那我们喜欢用DM的同志们怎样和原来一样使用DM一样的功能呢?别急,下面告诉你。
   我们不用DM,但我们可以找一个DM的替代品,找谁呢,打开UseSessionUnit时它有一个form不就是一个容器吗,我们就用它,把IWUseSession作为DM来用,把你需要用到数据访问控件如ADOConnection,ADODATAset,ADOQuery放到IWUseSession的FORM上,就可以引用了,
引用如下,
uses ServerController;//注意不是UseSessionUnit;
Procedure TIWForm1.IWButton1Click(Sender:TObject);
begin
UseSession.AdoDataSet1.connection:=ADOConnection;//哈哈,比第一种方法省事吧。
end;

“uses ServerController;//注意不是UseSessionUnit;原因 下面解释”:
IW工程中并不像delphi标准工程一样自动为每个form申明一个窗体的全局变量(var Form1:TForm1),但IW在单元ServerController里申明了一个全局类型函数
function UserSession: TIWUserSession;(它的详细请看ServerController单元)
这个UserSession就是 TIWUserSession的全局变量,我们要引用TIWUserSession上的控件,则要这样UserSession.控件.方法/属性。
注:这是本人凭记忆写的可能上面有此英文有错误(本人的E文差得要命).

另有的朋友经常问:我的IW工程有DM,把IWDBGRID放到IWForm1时设置好数据源等,但运行时就是没有显示数据?
答:原因是你的DM并没有创建(自动创建里是存在,但它在IWMain的后面,不行,错误),你可以按上面的方法解决,还可以把DM的创建提前,打开工程.dpr文件,把DM的创建移动到IWMain的前面。就可以解决,但不能进行多用户访问。  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多