注册 登录
编程论坛 VFP论坛

调用一个ole控件后,为什么textbox不能编辑了?

大树临风 发布于 2021-03-09 14:06, 2335 次点击
请问:我在表单中有一个ole控件,用于打开PDF文档的,当使用改控件打开PDF文档后,我的表单上的textbox控件不能编辑了,只能通过form.hide,form.show,才能重新编辑,但是这样操作会闪屏,很不爽啊!怎么办呢?
11 回复
#2
吹水佬2021-03-09 14:25
可能是失焦
试试 SetFocus
最后试试将OLE控件放在单独表单

#3
大树临风2021-03-09 15:14
回复 2楼 吹水佬
尝试setfocus\refresh等等,均不能解决,暂未测试ole控件单独放在一个表单中的情况,希望能有更好的方法,还有一个方法,就是使用messagebox(),但是这样有弹出一个多余的窗口....,会不会是和窗口句柄相关呢?有没有更好的办法
#4
吹水佬2021-03-09 17:20
可以有话,提供相关文件测试看看
#5
nbwww2021-03-09 18:09
FOXITREADER_AX_PRO.OCX   是用这个控件吗?
#6
nbwww2021-03-09 19:00
如果是的话可以这个试一下

thisform.WindowState=1
thisform.WindowState=2
#7
大树临风2021-03-09 22:37
回复 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程序完成后,也有类似的情况
#8
大树临风2021-03-09 22:40
回复 7楼 大树临风
还有,如果没有在文档中找到目标,控件会弹出提示窗口,关闭后,就可以编辑文本框了,或者设置一个messagebox(),也可以
#9
radiofan2021-03-10 08:34
以下是引用大树临风在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编辑过]

#10
吹水佬2021-03-10 10:46
回复 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)
#11
大树临风2021-03-10 23:21
这个问题暂且不管了,我先用messagebox()处理,我觉得可能是我安装的控件文件的问题,感谢各位。
#12
吹水佬2021-03-11 09:24
失焦是常见的问题,具体分析一下应该能解决的。
1