Activex中显示提示"Cannot focus a disabled or invisible window"(200分)

  • 主题发起人 主题发起人 china_hj
  • 开始时间 开始时间
C

china_hj

Unregistered / Unconfirmed
GUEST, unregistred user!
使用Ole调用Word
OleContainer1.CreateObjectFromFile (send_filename ,false)
try
OleContainer1.DoVerb (-1)
except
showmessage('打开文件出错,请与系统管理员联系');
exit
end;

老是提示 但是并不影响运行 用try也不行~请教各位大大
 
我也遇到过这个问题 在界面简单的时候没问题 多加几个控件就不行。
 
你单步跟踪就知道哪儿出现:
Cannot focus a disabled or invisible window了!
 
ActiveX单部跟踪都不好跟踪,我是自己设置提示信息
知道在
OleContainer1.CreateObjectFromFile (send_filename ,false)这条语句之后
OleContainer1.DoVerb (-1) 语句之前出的错误
查阅相关资料也知道是因为焦点转移到未可见或未能操作的控件上会出现该提示,于是在
OleContainer1.CreateObjectFromFile (send_filename ,false)前面加上判断该控件能否获得焦点canfocus后再控制setfocus来解决 发现提示是没了,但是OleContainer1控件不能自动打开Word文档了,变成灰色,必须根据AutoActive属性中设置的值 或者双击或者移动焦点方式可以进入编辑
后发现仅仅是出现提示而已,并没有异常反映,使用TRY确怎样都去不掉提示
不知道那位大大出现过这种问题
 
翻了翻全文检索 以前也有个人问过 看来没答案
http://www.delphibbs.com/delphibbs/dispq.asp?lid=981573
 
其实是Set你的控件焦点时,其父控件(或者更上一层)不可视或者父控件Disabled,你只需要Focus前激活其父控件就可以了
 
经过多次试验,我使用下面方法,在调试的机器上没问题,于是就认为是OleContainer1控件还在建立中,所以焦点不能移到控件上,导致出现这种提示,并且测试了几个机器,但是到了客户那边确并不是所有的机器都正常,而且不正常的比例很大,疑惑中…………
或者把OleContainer1.Canfocus 换成OleContainer1.showing也试过
OleContainer1.CreateObjectFromFile (send_filename ,false)
log := true
log_i :=1
while log do
begin
try
if OleContainer1.Canfocus Then
OleContainer1.setfocus
Log := false
Except
End;
Log_i := Log_i+1
if Log_i> 10 then
Log := false;
end;
OleContainer1.DoVerb (-1)
 
To MYSBS:
我这个OleContainer1的父控件就是AxtiveXForm,使用OleContainer1.Canfocus来检查,但是仍然不稳定,
 
感谢MYSBS:问题解决了发分
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
684
import
I
后退
顶部