IntraWeb程序多用户访问的解决方案 04-03-20 by chenshaizi
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的前面。就可以解决,但不能进行多用户访问。
IW7.0.19的破解方法:
IW的破解如下 修改IWKlooch.dcu 文件
查找B3018D45替换成B3048D45,共有1处
下面的解释:如把B3018D45替换成以下“//”后面的16进制
00是ltUnknown// B3008D45不能设置IP和端口
01是ltEval,// B3018D45不能设置IP和端口
02是ltPersonal// B3028D45个人版
03是ltDeveloper// B3038D45开发版
04是ltEnterprise// B3048D45 企业版功能最强大
05是ltPackagedEnterprise//B3058D45企业开发包版
06是ltPackagedPage// B3068D45 页模式
TMS和arcana的破解如下
修改以下文件查找017313A1替换成017313C3,共有个文件
/Arcana/IWControl/LibD7/ArcIWControlBase.dcu
/Arcana/IWDialogs/LibD7/ArcIWDlgBase.dcu
/Arcana/IWEnhanced/LibD7/ArcIWEnhancedInterface.dcu
/Arcana/IWGraphs/LibD7/ArcIWGraphsBar.dcu
/Arcana/IWLanguage/LibD7/ArcIWTranslatorBase.dcu
/TMS/LibD7/IWTMSBase.dcu
/TMS/LibD7/IWWebGrid.dcu
/TMS/LibD7/IWWebPlanner