求助解决在VFP的FORM中运行excel时不能编辑的问题
本人尝试在vfp的form中显示excel表格,按照在网上搜索的方法,是用api的语句SetParent通过句柄把运行中的excel放置在form中,但有个缺点,就是excel界面把整个form都占满了,想加点其它控件都不太好看。因为SetParent是通过控制句柄的方式来实现功能的,VFP控件中除了form有句柄外,其它控件都没有,所以我觉得除了在表单上占满显示excel外,无法在form中实现局部显示。为此,我试着学习VB6制作了一个控件,计划用来在form中局部显示excel(我认为也可以显示word,其它的应用程序),
在VB6中是这样建立的:
1、新建一个activeX控件
2、在通用中添加如下代码:
Public Property Get hwnd() As long
hwnd = UserControl.hwnd
End Property
目的是获得该控件的窗口句柄,然后生成ocx文件,注册后,再添加到VFP 的form中,该form添加一个属性excelobj,改该控件的name为ole2,再运行如下语句:
Declare integer SetParent IN user32.dll as SetParent Long, Long
thisform.excelobj = CreateObject("Excel.application") &&建立excel应用程序
thisform.excelobj.workbooks.add()
thisform.excelobj.Visible = .t.
SetParent(thisform.excelobj.Hwnd, excelinform.ole2.hwnd) &&把excel应用程序放在ole2 的窗口中。
即可显示excel在该控件中,
但运行过程中有一个问题:
如果thisform.excelobj.Visible = .t. 放在SetParent(thisform.excelobj.Hwnd, excelinform.ole2.hwnd)前,则会出现excel的窗口一闪而过,然后放置在该控件中,但是能编辑excel表格内容。
如果thisform.excelobj.Visible = .t. 放在SetParent(thisform.excelobj.Hwnd, excelinform.ole2.hwnd)后,则所显示的excel不能编辑表格内容,这是怎么回事啊?请高手帮忙解决一下。
以下是附件
gethwndtest.rar
(6.04 KB)
该附件中有一个ocx,自行注册,再重新添加到VFP的FORM中,即可。