help:intraWeb生成新窗口,同时传递字符串给这个窗口 如何:在intraweb程序中打开一个新的窗口,同时给这个窗口传递一个字符串,并在该新打开的窗口中显示出来。 另外,字符串的内容是动态的,是从程序中获得的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用下面的语句新开一个窗口:AddToInitProc('NewWindow("'+URL+ '", "","");');要传递的字符串可以做为请求参数放在URL后面在UserSession中可以把参数作为全局变量,看看下面的两段代码:type TIWUserSession = class(TIWUserSessionBase) private { Private declarations } public usrID,usrpwd,usrgroup:string; end;假设请求为:http://host/.../...dll?usrid=aaa&usrpwd=bbbprocedure TIWServerController.IWServerControllerBaseNewSession( ASession: TIWApplication; var VMainForm: TIWBaseForm);begin ASession.Data := TIWUserSession.Create(Asession); UserSession.usrid:=ASession.RunParams[0]; UserSession.usrpwd:=ASession.RunParams[1]; end;就跟isapi一样 我想楼上的可能误会楼主的意思了,楼上的打开新窗口是打开一个新的URL链接,当然可以用URL+参数的方式来传递参数。但我认为楼主的本意应该是在一个IntraWeb应用中,打开一个新的Web窗体,就是在IntraWeb工程中定义的非主窗体,一般是这样调用:AFormClass.Create(WebApplication).Show; 本来我认为可以像Windows编程那样,在AFormClass中定义Public变量(例如:UserID),然后把调用改写成这样:with AFormClass.Create(WebApplication) dobegin UserID := '9999'; Show;end;然后在AFormClass的OnRender事件中处理UserID。但是后来,我发现有很多对页面的初始化,即需要对UserID的操作都需要在OnCreate事件中处理,如果全部移到OnRender事件中的话,可能会出现错误。因此,后来,我采取了在TIWUserSession 中定义变量的方法:type TIWUserSession = class(TIWUserSessionBase) private { Private declarations } public UserID: String; end;然后在调用新窗体之前,首先对 UserSession.UserID 赋值,即改成如下方式:UserSession.UserID := '9999';AFormClass.Create(WebApplication).Show;然后在窗体的OnCreate事件中处理UserID,问题即可解决。 楼上的所言极是无论楼主想打开的窗口是什么,现在两种方法都有了,楼主还是研究一下usersession吧 想问一问楼上的,你知不知道intraweb里面怎么实现iframe的功能? 小问题,难道你 怎样反汇编成DELPHI代码? 大家来看看 ★★★请问怎样判断表内的一个字段是否存在?★★★ 用Delphi判断!ADO连接! 各位大侠帮帮忙-TDBChart方面的问题 面对.net.Delphi 还有梦吗? 急!在线等待,请进来看看…… 问一个很基础的问题,关于多线程? 查it企业红黑情况的那个网站地址是什么?谢谢 我的报表为什么只有一行显示啊?? 询问关于对象free的问题 indy的发邮件的问题!见者有份!
AddToInitProc('NewWindow("'+URL+ '", "","");');要传递的字符串可以做为请求参数放在URL后面
在UserSession中可以把参数作为全局变量,看看下面的两段代码:
type
TIWUserSession = class(TIWUserSessionBase)
private
{ Private declarations }
public
usrID,usrpwd,usrgroup:string; end;假设请求为:http://host/.../...dll?usrid=aaa&usrpwd=bbbprocedure TIWServerController.IWServerControllerBaseNewSession(
ASession: TIWApplication; var VMainForm: TIWBaseForm);
begin
ASession.Data := TIWUserSession.Create(Asession);
UserSession.usrid:=ASession.RunParams[0];
UserSession.usrpwd:=ASession.RunParams[1];
end;
就跟isapi一样
begin
UserID := '9999';
Show;
end;然后在AFormClass的OnRender事件中处理UserID。但是后来,我发现有很多对页面的初始化,即需要对UserID的操作都需要在OnCreate事件中处理,如果全部移到OnRender事件中的话,可能会出现错误。因此,后来,我采取了在TIWUserSession 中定义变量的方法:type
TIWUserSession = class(TIWUserSessionBase)
private
{ Private declarations }
public
UserID: String;
end;然后在调用新窗体之前,首先对 UserSession.UserID 赋值,即改成如下方式:UserSession.UserID := '9999';
AFormClass.Create(WebApplication).Show;然后在窗体的OnCreate事件中处理UserID,问题即可解决。
无论楼主想打开的窗口是什么,现在两种方法都有了,楼主还是研究一下usersession吧