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