我在网页上用ActiveXForm的时候,进入叶面的时候总是提示:Cannot focus a disabled or invisible window !!我把控件的属性设置为了visible:=true也不行,这是为什么啊???????????????????????????各位老大要救我阿!!!!!!!!!!谁能帮我阿!500分相送!绝不食言!!!!!!
帮忙up的有分!!!!!!!!

解决方案 »

  1.   

    不要在OnCreate事件中用SetFocus;
    在OnActivate中试试。
      

  2.   

    在OnActivate中试试SetFocus。
    不要在OnCreate事件中SetFocus
      

  3.   

    这个问题我遇到过,这样解决:
    project->options->packages->runtime packages
    选择build with runtime packages
    并且去掉下面列表中显示的第三方控件包,只保留delphi本身的。
      

  4.   

    在OnActivate中试试SetFocus。
    不要在OnCreate事件中SetFocus如果要在OnCreate事件中使用SetFocus,加个条件,Ex:
    if Edit1.visible = True then
      Eddit1.setfocus;
      

  5.   

    你里面有一个控件设置了焦点,但这个控件已经被隐藏了或者enabled=False,所以导致出现这个语句
      

  6.   

    SetFocus去掉;
    你直接做成ActiveX之后,再你的Delphi上调试,还有就是你可能用了 PageControl之类的空件;Active Form 没有OnShow,他就是不太喜欢让你用SetFocus;
      

  7.   

    不要在onshow事件或oncreate事件中使用enabled;=false;代码,
      

  8.   

    谢谢各位,我现在一个个的试!成功后马上结贴guestman(天涯浪子): 
    那些是第三方的,你贴一下可以马??
      

  9.   

    看看组窗体或容器窗体的enabled属性或visible属性
      

  10.   

    那 你查一查close,destroy事件中,是不是用了setfocus之类的代码呢?
      

  11.   

    vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;qrpt;teeui;teedb;tee;dss;teeqr;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;inetdb;nmfast;webdsnap;websnap;dbexpress;dbxcds;indy;dclOffice2k
    把其他的去掉,只留上面的。(注意!先备份)
      

  12.   

    不能在oncreate事件中写,因为当时控件还没显示呢、
    试着晚一点再写该代码
      

  13.   

    还是有!!!之前,我问过borland的专家,需要做destroy的重载工作!
    这些都好像没有问题!该释放的我都成功释放了!
    关键是,我第一次进入页面的时候没有错误的!
    我返回到前一页后,再次进而这个页面的时候,提示出错!你说气不气人,我代码里面改释放也都释放了,因为,关闭IE的时候没有任何问题!反到是离开的时候出了这个问题,真不知道怎么办?大家讨论讨论吧,这个问题可能
    不只我一个人碰到!!
      

  14.   

    那是因为你的程序将焦点移到一个ENABLE设为FALSE的控件上而导致
      

  15.   

    你把例子发给我,我看看!
    [email protected]
      

  16.   

    xunji(呵呵,MM,我想……) :你说得很有道理,如何在第二次进入WEB页面的时候重新将焦点放回来是如何做的。
    用setfocus是肯定不行的,我把代码里面全部加上了showmessagebox!察看运行的情况!遗憾的是:ActiveXForm 的OnActivate方法根本就没有被调用!非常奇怪吧!不信大家自己可以搞个很简单的列子试试!
      

  17.   

    不要在OnCreate事件中用SetFocus;
    在OnActivate,onshow中试试。
      

  18.   

    窗体和各个控件的enabled属性、visible属性都应设为True.
      

  19.   

    在OnShow()事件上加上:for I := 0 to ComponentCount -1 do
      if Components[I] is TWinControl then
      begin
        if (Components[I] as TWinControl).visible and
            (Components[I] as TWinControl).enabled then
        begin
          (Components[I] as TWinControl).SetFocus;        
          (Sender as TWinControl).SetFocus;
          if not TWinControl(Sender).Focused then
            exit;
        end;
      end;应该可以解决你的焦点异常的问题。
      

  20.   

    Wally_wu(不想再写代码) :放心,不打诳语!只要解决,就开5贴,给你分!这贴的100分是给帮忙up的人和关心该问题的人!关键是看你的代码能否解决,我试试先!!!
      

  21.   

    你说的OnShow事件???指什么的onshow事件? ActiveXform可没有这个事件!!
      

  22.   

    Sorry,没看清ActiveXform,那可以在OnActivate或OnCreate都可以。
      

  23.   

    这个问题我这样解决了,可是,这不是我想要的效果!办法如下:在进入页面的时候! alert("haha"); 一个msgbox,点确定以后!就不会出这个问题了!我把alert一去掉,马上就出cannot focus 的错误了!哪个高手能对这种现象做解释??????????
      

  24.   

    这种问题产生的情况应该是这个窗体在桌面上还没有初始化完成,你就调用了诸如:setfocus等跟焦点有关的函数。还有一种可能,就是在程序中动态创建控件,设置了parent属性,如果设置了parent属性的话,又调用了onsize之类的函数,那么也可能出这种错误,解决办法就是适当的调整语句的位置。并且作逐步语句的测试,最终确定出错的地方。
      

  25.   

    哈哈,你说的说那个Delphi中的ActiveForm的问题吧!
      

  26.   

    贴一下你的activeformcreate等方法的源码吧!
    还有,你新做一个最简单的activeForm会有问题吗
      

  27.   

    findcsdn(searchcsdn):你对web熟不熟悉?? html的标记 <body> 里面除了有onload事件,还有没有onActive 等事件,我想问题是不是出在这里,这些事件是否有先后的顺序呢?我的意思是说,网页上控件的显示和激活,和这些事件的先后比较起来,是一个什么样的关系呢?
      

  28.   

    兔 NightCloud() :呵呵……问题应该不在代码里面了!我排除了一整天了!包括昨晚!问题的关键在于web页面上 控件的显示和激活 和web本身的事件的先后上!
    应该是这样的!现在程序完全怎么运行都可以了!但非要在进入页面的同时,先alert一个
    对话框!!!!