标题:调用一个ole控件后,为什么textbox不能编辑了?
只看楼主
大树临风
Rank: 2
等 级:论坛游民
帖 子:128
专家分:14
注 册:2015-12-9
结帖率:80%
已结贴  问题点数:20 回复次数:11 
调用一个ole控件后,为什么textbox不能编辑了?
请问:我在表单中有一个ole控件,用于打开PDF文档的,当使用改控件打开PDF文档后,我的表单上的textbox控件不能编辑了,只能通过form.hide,form.show,才能重新编辑,但是这样操作会闪屏,很不爽啊!怎么办呢?
搜索更多相关主题的帖子: 调用 控件 编辑 textbox ole 
2021-03-09 14:06
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:7 
可能是失焦
试试 SetFocus
最后试试将OLE控件放在单独表单

2021-03-09 14:25
大树临风
Rank: 2
等 级:论坛游民
帖 子:128
专家分:14
注 册:2015-12-9
得分:0 
回复 2楼 吹水佬
尝试setfocus\refresh等等,均不能解决,暂未测试ole控件单独放在一个表单中的情况,希望能有更好的方法,还有一个方法,就是使用messagebox(),但是这样有弹出一个多余的窗口....,会不会是和窗口句柄相关呢?有没有更好的办法
2021-03-09 15:14
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
可以有话,提供相关文件测试看看
2021-03-09 17:20
nbwww
Rank: 6Rank: 6
等 级:贵宾
威 望:10
帖 子:222
专家分:468
注 册:2021-1-9
得分:7 
FOXITREADER_AX_PRO.OCX   是用这个控件吗?
2021-03-09 18:09
nbwww
Rank: 6Rank: 6
等 级:贵宾
威 望:10
帖 子:222
专家分:468
注 册:2021-1-9
得分:0 
如果是的话可以这个试一下

thisform.WindowState=1
thisform.WindowState=2
2021-03-09 19:00
大树临风
Rank: 2
等 级:论坛游民
帖 子:128
专家分:14
注 册:2015-12-9
得分:0 
回复 4楼 吹水佬
olecontrol1控件是阅读PDF的控件,VFP自带的相关控件都不能用,在网上下载了一个“益有文书”的软件,安装之后,就可以用这个控件了
        
......            
            thisform.olecontrol1.openFileInit(1.35,"")
            thisform.olecontrol1.setfileName(CPath,"",0)
            thisform.olecontrol1.SetSelectMode(1)               
            searchjg=thisform.olecontrol1.searchstr(searchwordPDF,1,3000)    &&到这里,就在控件中打开了PDF文档


            thisform.WindowState= 2
            thisform.o_TEXTBOX2.Visible= .T.
            thisform.o_TEXTBOX2.setfocus        &&还试过refresh等等,均不管用,thisform.o_TEXTBOX2始终不能编辑
......
            &&没办法,只能使用如下方式
            thisform.hide
            thisform.show

另外,在调用word程序完成后,也有类似的情况
2021-03-09 22:37
大树临风
Rank: 2
等 级:论坛游民
帖 子:128
专家分:14
注 册:2015-12-9
得分:0 
回复 7楼 大树临风
还有,如果没有在文档中找到目标,控件会弹出提示窗口,关闭后,就可以编辑文本框了,或者设置一个messagebox(),也可以
2021-03-09 22:40
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:7 
以下是引用大树临风在2021-3-9 22:37:44的发言:

olecontrol1控件是阅读PDF的控件,VFP自带的相关控件都不能用,在网上下载了一个“益有文书”的软件,安装之后,就可以用这个控件了
        
......            
            thisform.olecontrol1.openFileInit(1.35,"")
            thisform.olecontrol1.setfileName(CPath,"",0)
            thisform.olecontrol1.SetSelectMode(1)               
            searchjg=thisform.olecontrol1.searchstr(searchwordPDF,1,3000)    &&到这里,就在控件中打开了PDF文档


            thisform.WindowState= 2
            thisform.o_TEXTBOX2.Visible= .T.
            thisform.o_TEXTBOX2.setfocus        &&还试过refresh等等,均不管用,thisform.o_TEXTBOX2始终不能编辑
......
            &&没办法,只能使用如下方式
            thisform.hide
            thisform.show

另外,在调用word程序完成后,也有类似的情况


o_textbox2控件是不可见还是不能编辑? 另外,该控件置前或后是否有关?还可以测试用代码是否可以编辑?

[此贴子已经被作者于2021-3-10 08:37编辑过]

2021-03-10 08:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 7楼 大树临风
1、可以的话,提供安装的控件文件测试。
2、有无可能是其他应用软件的抗干扰抢焦,如运行了360
3、试试用 windows API SetFocus() 或 SetForegroundWindow() 使窗口重新获取焦点:
   声明:
   DECLARE LONG SetFocus IN User32 LONG
   DECLARE LONG SetForegroundWindow IN User32 LONG
   在输入编辑控件的 GotFocus 事件执行:
       SetFocus(thisform.hWnd)
       或:
       SetForegroundWindow(thisform.hWnd)
2021-03-10 10:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505060-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112548 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved