潍坊行政服大厅:如何隐藏Visual FoxPro 6的主窗口?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 14:43:29

隐藏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