终于安装成功并将所用的两个三方空间安上,对我在D7编写的一个ActiveX控件进行了重新编译,没想到,原来DELPHI的BUG依然存在,但是,就其他方面来说,D2007还是不错的。
我的这个问题如下,不知道那位大侠碰到过。
新建一个ActiveX,在Form上放上一个PopupMenu控件,随便建上几条菜单,编译后,在网页上发布,你会发现第一个打开的网页上的该ActiveX控件可以实现右键弹出菜单,在不关闭该网页的情况下,再打开一个该网页,第二个打开网页上的该ActiveX控件的右键弹出菜单就不能弹出来了,过去在网上找找说是Delphi5~7都有该问题,需要改Menu.pas单元,没想到该BUG居然如此顽固,在D2007上还存在。总的来说,D2007还是不错的,别让一些小BUG影响它。
如果那位大侠英语水平高的话,不妨将该信息反馈给CodeGear公司.

解决方案 »

  1.   

    喔,原来楼主是Delphi来开发WEB应用啊?好用吗?
      

  2.   

    这个问题的本质是 VCL 不支持多线程所致(你打开的两个网页其实是同一个IE进程的两个线程),而且不光是 PopupMenu控件,还有VCL控件的Hint等(经常会使IE报错)...总之,这不是个简单问题,我个人觉得,要使 VCL 支持多线程,非得对整个VCL架构动大手术才行。另外,PopupMenu的问题还有其他的办法解决,
    一是可以自己用 API :TrackPopupMenu(PopupMenu1.Handle,TPM_LEFTALIGN,... 手工弹出菜单,通过Form处理TWMCommand 消息处理菜单点击...
    二是可以找第三方的线程安全PopupMenu控件,比如:http://www.mustangpeak.net/
      

  3.   

    我想是不是这样,你在activx中,需要指定一个id。具体是这样:我在c#。net下开发程序的时候,我在cs创建一个服务器控件上,并让它们在页面上显示出来,如果我没有指定这些控件的id,那么给他们创建的事件就会只对第一个生成的控件有效,对其它控件无效。虽然而在不改其它代码,只是为每个控件写一个唯一的id后,就一切正常起来。你依照我的思路看能否解决问题。