怎样可以把网页的变量传递给ActiveForm,请各位给我一个详细的例子?

解决方案 »

  1.   

    在ActiveForm的接口中明一个属性,然后在网页中写JavaScript,读取网页中的变量(如输入框中的文本)传递给这个接口属性
      

  2.   


    学习中,先顶顶顶
          . 
                   |
               \   *  ./
              .  * * * .
             -=*  POP! *=-              
             .  .* * *  .
              /    *  .\
                   |  
                   .     
          . 
                   |
               \   *  ./
              .  * * * .
             -=*  POP! *=-              
             .  .* * *  .
              /    *  .\
                   |  
                   .     
          . 
                   |
               \   *  ./
              .  * * * .
             -=*  POP! *=-              
             .  .* * *  .
              /    *  .\
                   |  
                   .     
    先放三个礼花,看看,庆祝节日!!!
    /*
    祝福你好运
    明天过节
    */.....@---------------@     
     --@ @ @ --------- @ @ @ --
    .@ @\@/@ @-------@ @\@/@ @.
    .\@|@|@|@/-....--\@|@|@|@/.
    . \\\|/// --..--- \\\|/// -
     - \\|// --..----- \\|//.--
     -- \|/--..---.---- \|/---.
     -- =&= ---..------ =&= ---
    --- /|\ --------.---/|\ -.-
    ~ ~ 
    ⊙ ⊙祝 你 快 乐 
      

  3.   

    请问知道在Activeform发布后,在Activeform窗体上的ADOConnection 怎么进行远程数据库连接!
    我用读注册表的的方法,进行connectstring赋值,但连接还是失败,不过在局域网一点问题都没有!请问如何办才是!谢谢
      

  4.   

    <OBJECT id="MyViewer"
        classid="clsid:AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
        width=100% height=100%
        codebase="/XXXX/XXXX.cab#version=????">
        <PARAM NAME="属性" VALUE="值">
    </OBJECT>
      

  5.   

    网页什么变量?
    ACTIVE FORM 本来就不成熟哦!
    用JAVA会不会好一点,ACTIVE FORM很麻烦的!
      

  6.   

    同意
    : Roc_fu(专业菜鸟)
    用param 传递属性
      

  7.   

    转一篇文章给你:http://www.csdn.net/develop/article/13/13979.shtm
    OCX中得到IE传递的参数(2002/5/30 三金 版权所有)    如果你的工程属于OCX工程,并且需要连接数据库服务器。那么,工程应该适
    应不同的数据库连接参数,如数据服务器名、数据库名、用户名、密码等当它们发
    生变化时,工程应不需修改。这就要求OCX工程能携带参数。怎么搞?往下看。    在你看这篇文章之前,最好先看一下三金所写的另外一篇文章 “EXE工程和OCX
    工程的转化“。否则,后果自负。别怕,only a joke!:),不过,三金还是劝你看
    一下,本篇你就会明白得快一些。如果你的OCX工程主Form是普通Form,并且继承于
    工程中的ActiveForm,then,let's go on!    为了便于说明,假设工程中的ActiveForm的name为ActiveFormX,单元文件为
    ActiveFormX.pas,工程主Form的name为frmMain,单元文件为MainForm.pas。总的说
    来,就是在就是在TActiveFormX与TfrmMain之间加一个中间类,由此类完成参数的接
    收。设此类为TActiveFormNewX,因为此类作为二者的中间类,就需要把TfrmMain的父
    类由TActiveFormX改为该类。打开MainForm.pas,找到TfrmMain的声明:
    TfrmMain=class(TActiveFormX)改为TfrmMain=class(TActiveFormNewX),并且,
    TActiveFormNewX继承于TActiveFormX。TActiveFormNewX的声明和实现如下,你应该
    把它拷到ActiveFormX.pas单元中TActiveFormX的后面。  TActiveFormNewX = class(TActiveFormX,IPersistPropertyBag)
      public
        ServerName,DBName,UserName, UserPassword:String;
      protected
        function IPersistPropertyBag.InitNew=PersistPropertyBagInitNew;
        function IPersistPropertyBag.Load   =PersistPropertyBagLoad;
        function IPersistPropertyBag.Save   =PersistPropertyBagSave;
        function IPersistPropertyBag.GetClassID=PersistPropertyBagGetClassID;    function PersistPropertyBagInitNew:HResult;stdcall;
        function PersistPropertyBagLoad(const pPropBag:IPropertyBag;Const pErrorLog:
        IErrorLog):HResult; stdcall;
        function PersistPropertyBagSave(const pPropBag:IPropertyBag;fClearDirty:BOOL;
        fSaveAllProperties:BOOL):HResult; stdcall;
        function PersistPropertyBagGetClassID(out classID:TCLSID):HResult; stdCall;
      end;  function TActiveFormNewX.PersistPropertyBagInitNew:HResult;
      begin
        Result:=S_OK;
      end;  function TActiveFormNewX.PersistPropertyBagLoad(const pPropBag:IPropertyBag;
      Const pErrorLog:IErrorLog):HResult;stdCall;
      var
      Str:OleVariant;
      begin
        if pPropBag.Read('ServerName', Str ,pErrorLog) = S_OK then 
          ServerName :=Str;
        if pPropBag.Read('DBName', Str ,pErrorLog) = S_OK then 
          DBName :=Str;
        if pPropBag.Read('UserName', Str ,pErrorLog) = S_OK then 
          UserName :=Str;
        if pPropBag.Read('UserPassword', Str ,pErrorLog) = S_OK then 
          UserPassword :=Str;
        Result:=S_OK;
      end;  function TActiveFormNewX.PersistPropertyBagSave(const pPropBag:IPropertyBag;
      fClearDirty:BOOL;fSaveAllProperties:BOOL):HResult;
      begin
        Result:=S_OK;
      end;  function TActiveFormNewX.PersistPropertyBagGetClassID(out classID:TCLSID):
      HResult; stdCall;
      begin
        Result:=S_OK;
      end;     从代码不难看出,此类有四个public成员:ServerName,DBName,UserName, 
    UserPassword。参数就是传给了它们。既然是public成员,且TfrmMain是该类子
    类,所以,就可以在TfrmMain中得到这四个值。注意,应该把代码写在TfrmMain
    的OnShow中,而不是OnCreate。
        在IE中应这样书写:
      <OBJECT       
              classid="clsid:3E71BE48-9AE1-431D-BD68-B17AA355BF38"   
              codebase="ActiveFormProj1.ocx#version=1,0,0,0"   
              width=538
              height=350   
              align=center   
              hspace=0   
              vspace=0
      >
        <param name=ServerName value=sanjin>
        <param name=DBName value=tian>
        <param name=UserName value=user>
        <param name=UserPassword value=>
      </OBJECT>
        如果你想添加或减少参数,不用我多说了吧!ok,解决。    有朋友要发表意见:“我的OCX工程主Form是TActiveForm,照你的办法,我
    可以在让我的TActiveForm继承于此类,我在TActiveForm中按同样的办法接收不
    就的了!“。那我告诉你,参数的确能得到,不过你如果重新打开以下你的工程,
    按F11看一下,TActiveForm的说有属性的和普通Form没什么两样了,虽然程序不
    出错,但除了什么事和我无关。你要问为什么?我现在头有些大,要休息了。
      

  8.   

    除了三金所说的这种,还有一个办法:在ActiveForm工程做好后,点击"View"---"Type Library"菜单,在Interface里面增加一个属性,比如MyProp,设置类型比如BSTR,按刷新键,然后在ActiveForm的主窗口中的set_MyProp函数中写上:
    因本人电脑没安装Delphi,以C++Builder举例如下:
    STDMETHODIMP TActiveFormXImpl::set_MyProp(BSTR s)
    {
      try
      {
       m_VclCtl->strInForm= AnsiString(s);
      }
      catch(Exception &e)
      {
        return Error(e.Message.c_str(), IID_IActiveFormX);
      }
      return S_OK;
    };
    其中strInForm是主窗口的成员变量,String类型
    在IE中应这样书写:
      <OBJECT       
     ID=MyObj
              classid="clsid:3E71BE48-9AE1-431D-BD68-B17AA355BF38"   
              codebase="ActiveFormProj1.ocx#version=1,0,0,0"   
              width=538
              height=350   
              align=center   
              hspace=0   
              vspace=0
      >
      </OBJECT><script language="VBScript">
      MyObj.MyProp="abcd"
      MyObj.SetString("MyString")
    </script>
    我没看到三金的文章之前都是这样做的
      

  9.   

    不小心多拷一句,不要MyObj.SetString("MyString")