如何:在intraweb程序中打开一个新的窗口,同时给这个窗口传递一个字符串,并在该新打开的窗口中显示出来。 另外,字符串的内容是动态的,是从程序中获得的。

解决方案 »

  1.   

    用下面的语句新开一个窗口:
    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一样
      

  2.   

    我想楼上的可能误会楼主的意思了,楼上的打开新窗口是打开一个新的URL链接,当然可以用URL+参数的方式来传递参数。但我认为楼主的本意应该是在一个IntraWeb应用中,打开一个新的Web窗体,就是在IntraWeb工程中定义的非主窗体,一般是这样调用:AFormClass.Create(WebApplication).Show; 本来我认为可以像Windows编程那样,在AFormClass中定义Public变量(例如:UserID),然后把调用改写成这样:with AFormClass.Create(WebApplication) do
    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,问题即可解决。
      

  3.   

    楼上的所言极是
    无论楼主想打开的窗口是什么,现在两种方法都有了,楼主还是研究一下usersession吧
      

  4.   

    想问一问楼上的,你知不知道intraweb里面怎么实现iframe的功能?