要做一个B/S上用的activeX控件,要传入几个参数,传出几个参数,能弹出模态窗口,最后生成的格式是DLL。用DELPHI自带的大致写了一个,但是在IE下不能弹出模态窗口。 
请大家给出一个思路。

解决方案 »

  1.   

    绝对能弹出模式窗口,就和平常开发模式窗口一样,无非是把EXE转成DLL,在前面加一个Activex的外壳而已
      

  2.   

    给个置顶得代码,VB得。楼主自己改成DELPHI吧
    Option Explicit'使窗体永远置于最前面的代码Declare Function SetWindowPos& Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)Public Sub setFrmOnTop(hWnd As Long)
        On Error Resume Next
        Dim rtn
        rtn = SetWindowPos(hWnd, -1, 0, 0, 0, 0, 3)
    End SubPublic Sub setFrmNormal(hWnd As Long)
        On Error Resume Next
        Dim rtn
        rtn = SetWindowPos(hWnd, -2, 0, 0, 0, 0, 3)
    End Sub
      

  3.   

    you can work around this problem by hosting the control in an HTML Application
      

  4.   

    因为这个控件以前是用VC做的,现在要改为DELPHI来做。但是VC做的是可以弹出棋态窗口的的,DELPHI试了很久,就是不行。
      

  5.   

    自己搞定,写出来,共享一下:
    一、先将控件中要实现的功能在普通的工程中编写,并测试完毕;
    二、加ActiveX外壳:
       1、在File-New-Other-ActiveX页中新建一个ActiveX Libtary 工程,然后在相同的页中添加Automation Object;
       2、在弹出的向导中,将CoClaee Name设为TEST(当然你也可以设为其它);
       3、在随后的TLB设置中你能看到系统为你生成了一个接口(ITEST),当然你也可以改为其它名称;
       4、在ITEST中你可以增删各种属性和方法;这和DELPHI的VCL控件开发没有什么区别;需要注意的是参数类型。字符串可以用BSTR,布尔可以用OLE_ENABLEDEFAULTBOOL,还要注意传入传出方式(IN 或OUT);
       5、假设我们设置了一个RUN方法,是运行该控件窗体的。
       至此,我们的ACTIVEX外壳已完成。
    三、将窗体加入控件中:
      在生成的主单元中,USE一下该窗体。随后在RUN的方法中加入:
      Form1:=TForm1.Create(nil);
      Form1.ShowModal;
      Form1.Free;
    四、编译控件:选择Project-Compile Test;
    五、发布控件:选择Run-Register ActiveX Server
    六、测试控件:生成一个HTML文档
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <script>
    var Project1 = new ActiveXObject("Test.test");
    Project1.run();
    </script>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head>
    <body>
    </body>
    </html>
    双击该文档,即可看到窗体被弹出。
      
      

  6.   

    我也遇到相同问题,但经过实验后发现Delphi在IE中也可以弹出模式窗口.设计ActiveFormX时我在普通工程中完成功能,然后引入到ActiveX项目中.
    这时如果以前主窗体的visible属性为True的话,在Showmodal时就会产生'cannot make a visible window modal'.
    所以:
    只用将目标窗体的visible属性设为false就可以弹出模式窗口 :)