我在网页上用ActiveXForm的时候,进入叶面的时候总是提示:Cannot focus a disabled or invisible window !!我把控件的属性设置为了visible:=true也不行,这是为什么啊???????????????????????????各位老大要救我阿!!!!!!!!!!谁能帮我阿!500分相送!绝不食言!!!!!! 帮忙up的有分!!!!!!!!
在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;应该可以解决你的焦点异常的问题。
在OnActivate中试试。
不要在OnCreate事件中SetFocus
project->options->packages->runtime packages
选择build with runtime packages
并且去掉下面列表中显示的第三方控件包,只保留delphi本身的。
不要在OnCreate事件中SetFocus如果要在OnCreate事件中使用SetFocus,加个条件,Ex:
if Edit1.visible = True then
Eddit1.setfocus;
你直接做成ActiveX之后,再你的Delphi上调试,还有就是你可能用了 PageControl之类的空件;Active Form 没有OnShow,他就是不太喜欢让你用SetFocus;
那些是第三方的,你贴一下可以马??
把其他的去掉,只留上面的。(注意!先备份)
试着晚一点再写该代码
这些都好像没有问题!该释放的我都成功释放了!
关键是,我第一次进入页面的时候没有错误的!
我返回到前一页后,再次进而这个页面的时候,提示出错!你说气不气人,我代码里面改释放也都释放了,因为,关闭IE的时候没有任何问题!反到是离开的时候出了这个问题,真不知道怎么办?大家讨论讨论吧,这个问题可能
不只我一个人碰到!!
[email protected]
用setfocus是肯定不行的,我把代码里面全部加上了showmessagebox!察看运行的情况!遗憾的是:ActiveXForm 的OnActivate方法根本就没有被调用!非常奇怪吧!不信大家自己可以搞个很简单的列子试试!
在OnActivate,onshow中试试。
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;应该可以解决你的焦点异常的问题。
还有,你新做一个最简单的activeForm会有问题吗
应该是这样的!现在程序完全怎么运行都可以了!但非要在进入页面的同时,先alert一个
对话框!!!!