我已经实验了一下,现在我知道如何在intraweb中调用activex了,下面我说一下范例
有这么一个程序,在ActiveXform上有一些报表控件,而在intraweb界面上有一个iwedit,希望通过对iwedit上输入sql语句,来实现报表的产生。
(1)产生一个ActiveXForm,上面有Query\DataSource还有几个报表控件,在Type Libary里增加一个SQL:widestring read Get_SQL的属性,这个是用来接收SQL语句的,在它的Get_SQL中写出调用ActiveForm.Query执行SQL的代码
(2)注册这个ActiveFormX,这个时候,启动FrontPage,建立一个新的页面,然后在这个页面中插入你新建的ActiveXForm
(3)在FrontPage里分析一下你的脚本看看,你有了全新的发现,在加入ActiveXForm的脚本是这么写的
  <object   classid:....classid.......    width........ height......>
    <param name="caption“  value="activeXform1">
       ................
    <param name="SQL" value="">
  </object>
   这个说明了什么呢?说明了IntraWeb完全可以通过产生动态脚本的方式插入ActiveXForm的控件,而且可以通过指定<param name..........value.........>的方式控制ActiveXForm执行什么样的工作。
(4)那么我们回到Intraweb,加入一个iwbutton,再加一个iwedit,我们可以写iwbutton来动态产生插入ActiveXForm的脚本。
     这里有个问题,那么由谁加载这个脚本呢?我觉得最好的就是IwText,那么再在Iwform上放一个IwText,这个时候写Iwbutton的OnClick的事件代码
     IwText1.lines.clear;
     IwText1.lines.add( '<object   classid:....classid.......    width........ height......>
    <param name="caption“  value="activeXform1">
       ................');
     IwText1.lines.add('<param name="SQL" value="'+IwEdit1.text+'">');
     IwText1.lines.add('</object>');
(4)OK了,你执行一下,现在的ActivexForm就可以加载到Intraweb上,并且一出现,就执行了IwEdit里指定的SQL语句(5)两句话"
   1.通过动态产生<object>...........</object>脚本的方式加载ActiveForm
   2.通过动态产生<param name ....  value>脚本的方式与ActiveForm传递参数
   最后注意一下,刚才说的IwText的RowLine的属性必须为True,以免IwText自动换行或者加那些不该有的空格

解决方案 »

  1.   

    先谢谢了,
    有一天也会用 InterWeb 编程的,老兄有什么经验还请多多告之,
    [email protected]
      

  2.   

    这个太难了,不知道以什么样的方式传递对象,就说你能在两个*exe的程序之间传递对象吗?
      

  3.   

    有脑子,聪明.办法简单明了.有时间我尝试一下用此法对付ACTIVEX
      

  4.   

    to:gzllich(刚从泥坑里出来) 
    我想这个问题可以借助一下ClientDataSet以及XML控件,首先在ActiveFormX里加入一个ClientDataSet,而在IntraWeb里加入产生XML文本的控件,那么问题简单了,只要在加载ActiveX前,把数据整理成为XML字符串在<param name="SQL" value="">里面加载,并且在ActiveX生成的时候令其自动的把这些XML字符串加载给ClientDataSet不就可以实现了吗?
      

  5.   

    再问一个问题:
       虽然我提出了依靠IntraWeb上的ClientDataSet和ActiveXForm上的ClientDataSet交换XML字符串的方式,但是我有一个不明白,就是ClientDataSet的数据如何不使用ClientDataSet.SaveToFile和ClientDataSet.LoadFromFile的方式保存XML数据呢?
      

  6.   

    既然可以放置任何的ActiveXForm,那么为什么不能解决报表问题呢?