Vfp 文档 一些经典编程文章 可供初学者学习编程时使用
源代码在线查看: 隐藏vfp的主窗口.txt
隐藏Visual FoxPro的主窗口
蒋清野
(清华大学土木工程系)
在Visual FoxPro程序设计中,经常令程序员大感头疼的就是Visual FoxPro的主窗口。事实上,很多应用程序需要使用自己设计的主窗口代替Visual FoxPro的主窗口。在Visual FoxPro的帮助文件中指出,内存变量_Screen(也就是主窗口对象)具有Hide方法和Visual属性,因此我们希望能够使用_Screen.Hide或者是_Screen.Visible=.F.语句来隐藏Visual FoxPro的主窗口。但是事实证明,这两个语句都没有能够达到我们的目的。
这种情况是由于Visual FoxPro的一个设计缺陷造成的。当一个表单或者是一个表单集被隐藏起来时,上一个被激活的对象将被重新激活,如果已经没有其他事先被激活的对象,Visual FoxPro的主窗口将被激活。如果_Screen.Hide或者是_Screen.Visible=.F.语句能够生效的话,那么在当前的Visual FoxPro应用程序中将没有任何被激活的对象。因此,主窗口对象_Screen的Hide方法和Visual属性实际上是无效的。
值得庆幸的是,主窗口对象_Screen还具有Top和Left等其他属性。虽然我们不能够真正的清除主窗口对象,但是可以调整主窗口在屏幕上的位置。如果我们把Visual FoxPro的主窗口搬到屏幕以外,是不是可以获得我们所需要的效果呢?以下的这段程序就是根据这个思路编写的,它不但很好地将Visual FoxPro的主窗口隐藏了起来,还可以在需要的时候把它重新找回来。
* 创建窗口HideDeskTop
frmHideDesktop = CREATEOBJECT("HideDeskTop")
frmHideDesktop.SHOW(1)
* 定义窗口HideDeskTop
DEFINE CLASS HideDeskTop AS FORM
TOP = 17
LEFT = 24
DESKTOP = .T.
CAPTION = "隐藏Visual FoxPro主窗口的示例程序"
MDIFORM = .T.
oleft = .F. && 变量oleft存储Visual FoxPro主窗口的左位置
* 在窗口HideDeskTop添加按钮HideShow
ADD OBJECT cmdHideShow AS HideShow WITH ;
TOP = 156, ;
LEFT = 175, ;
HEIGHT = 29, ;
WIDTH = 150, ;
CAPTION = "隐藏主窗口", ;
NAME = "Command2"
* 在窗口HideDeskTop添加按钮CloseButton
ADD OBJECT cmdClose AS CloseButton WITH ;
TOP = 196, ;
LEFT = 175, ;
HEIGHT = 29, ;
WIDTH = 150, ;
CAPTION = "关闭本程序", ;
NAME = "cmdClose"
ENDDEFINE
* 定义按钮HideShow
DEFINE CLASS HideShow AS COMMANDBUTTON
PROCEDURE CLICK
IF THIS.CAPTION = "隐藏主窗口"
THIS.CAPTION = "显示主窗口"
* 存储Visual FoxPro主窗口的左位置
THISFORM.oleft = _SCREEN.LEFT
* 将Visual FoxPro主窗口移到屏幕以外
_SCREEN.LEFT = -10000
ELSE
THIS.CAPTION = "隐藏主窗口"
* 将Visual FoxPro主窗口恢复到原来的位置
_SCREEN.LEFT = THISFORM.oleft
ENDIF
ENDPROC
ENDDEFINE
* 定义按钮CloseButton
DEFINE CLASS CloseButton AS COMMANDBUTTON
PROCEDURE CLICK
* 将Visual FoxPro主窗口恢复到原来的位置
_SCREEN.LEFT = THISFORM.oleft
* 释放窗口HideDeskTop
THISFORM.RELEASE
ENDPROC
ENDDEFINE