征服VF中的“白框”

当我们用Visual FoxPro 6.0开发数据库应用程序时,生成.exe的可执行文件运行时总是有一"白框"―Visual

FoxPro 6.0的主窗口(如图1),有的人可能并不需要它(尽管就像后面要提到的那样,它的功能非常的强大),有什么方法可以将其屏蔽吗?
  其实,在VFP6.0中,我们有很多方法可以屏蔽此窗口。微软MSDN Library Visual Studio
6.0文档中有关VFP6.0的部分指出,系统变量_Screen表示 Visual FoxPro
6.0的主窗口,我们可以通过调用窗口的方法程序或者修改其相关属性来达到隐藏该窗口的目的:
  方法一:调用主窗口的Hide方法程序。
    格式:_Screen.Hide
在运用时将其放入主控程序中即可。
  方法二:修改主窗口的布局属性(Left和Width、Top和Height)。
    格式1:_Screen.Left=-n
_Screen.Width=m&&m和n是两个正整数,且m<n。
    格式2:_Screen.Top=-n
_Screen.Height=m&&m和n是两个正整数,且m<n。
方法三:修改主窗口的Visible(可见性)属性。

    格式:_Screen.Visible=.f.
有的书上曾说,方法一和方法三无效,可是经过我的实践,它确实可以达到隐藏Visual FoxPro 6.0的主窗口的目的,
不管是在Visual FoxPro 6.0的开发环境中,还是在编译出来的可执行程序中。
  Visual FoxPro
6.0的主窗口可以支持很多像在开发环境中的主窗口一样的功能,比如预览报表,显示输出类型为屏幕的的查询结果(类似Select * from
table),轻松使用由toolbar(工具栏)类派生的工具栏子类,从轻松实现像Visual FoxPro 6.0那样的工具栏效果,等等。
  但是有一个不那么方便的地方就是在主窗口中添加控件不那么方便,你可能要用到窗口类AddObject成员函数才行。
  下面我们就通过一个实例来探讨如何有效利用"白框"。
  1.用VFP新建一项目,取名为whitebox.pjx(白框)。
  2.新建一自由表,取名为whitebox.dbf,表结构以及内容自己决定,与本文的讨论无关。
  3.新建一菜单,取名为whitebox.mnx,内容自定,注意:在用自己设计的表单作为主表单时,加载到其上面的菜单在创建时,要打开"显示"->"常规选项"窗口,勾选"顶层表单"。但此处不用这样。
4.新建一报表,取名为whitebox.frx,以whitebox.dbf的数据为内容。
  5.新建一主控程序,取名为main.prg,并将其设为主文件。
  此程序要完成主窗口本身的属性的设置,界面元素的设计与加载,包括加载主菜单,设计与加载工具栏,设计与加载窗口客户区的控件(如按钮、表格)。

USE Whitebox&&打开表,建立数据环境

*主窗口本身的属性的设置

WITH _Screen
.Caption="WhiteBox"
.Icon="WhiteBox.ico"
*.BACKCOLOR=RGB(192,192,192)&&设置背景色为灰色,这里不用它,而用背景图片,见下一语句。
.Picture="BackGround.jpg"
.WIDTH=800
.HEIGHT=600
.AUTOCENTER=.t.
ENDWITH

*加载主菜单
do whitebox.mpr

*界面元素的设计与加载

*加载工具栏
PUBLIC tbrWhitebox
tbrWhitebox = CREATEOBJ('mytoolbar')
tbrWhitebox.Dock(0)&&让其一开始就处于菜单栏下方
tbrWhitebox.SHOW&& 显示工具栏

*加载窗口客户区的控件(如按钮、表格)

_Screen.AddObject('cmdPreviewReportBtn1','cmdPreviewReportBtn')&&加载"预览报表"按钮到主窗口客户区
_Screen.AddObject('cmdQueryBtn1','cmdQueryBtn')&&加载"显示查询结果"按钮到主窗口客户区,其中,cmdQueryBtn1为按钮名,cmdQueryBtn为类名
*以下两句为令添加的按钮可见
_Screen.cmdPreviewReportBtn1.Visible=.T.
_Screen.cmdQueryBtn1.Visible =.T.
*加载表格控件并进行初始化
_Screen.AddObject('Grid1','Grid')&&加载表格控件。注意我在这里使用了另外一种方法来将控件添加到主窗口中,即直接使用已存在的类来创建对象,然后修改其属性,不像前面那样将要使用的控件从已存在的类派生出来,再用它来创建对象,这时不用再修改属性,因为此类已被设置成所需要的形式。
WITH _Screen.Grid1&&初始化
RecordSourceType=0
.RecordSource="Whitebox"
.Left=250
.Top=100
.Height=250
.Visible=.t.
ENDWITH

*进入事件循环
READ EVENTS

*定义工具栏、按钮。注意:定义区是程序的最后一部分,不要在此区域内写其它非类定义代码,否则不会被执行。
DEFINE CLASS myToolBar AS Toolbar&&定义工具栏
ADD OBJECT btnPreviewReport AS CommandButton
ADD OBJECT sep1 AS Separator
ADD OBJECT btnQuery AS CommandButton

btnPreviewReport.AUTOSIZE=.T .
btnPreviewReport.Caption = "预览报表"
btnPreviewReport.Picture ="Report.ico"
btnQuery.AUTOSIZE=.T.
btnQuery.Caption = "显示查询结果"
btnQuery.Picture = "Query.ico"

LEFT = 1
TOP = 1
WIDTH = 25

CAPTION = "工具栏"

PROCEDURE btnPreviewReport.CLICK
REPORT FORM Whitebox PREVIEW
ENDPROC

PROCEDURE btnQuery.CLICK
SELECT * FROM Whitebox
ENDPROC
ENDDEFINE

DEFINE CLASS cmdPreviewReportBtn AS CommandButton&&定义"预览报表"按钮
Caption = '预览报表(/<P)'
Picture="Report.ico"
Left = 250
Top = 450
AutoSize=.t.

PROCEDURE Click
REPORT FORM Whitebox PREVIEW
ENDDEFINE

DEFINE CLASS cmdQueryBtn AS CommandButton&&定义"显示查询结果"按钮
Caption = '显示查询结果(/<Q)'
Picture=" Query.ico"
Left = 450
Top = 450
AutoSize=.t.

PROCEDURE Click
SELECT * FROM Whitebox
ENDDEFINE
6.添加上面程序中用到的相应的资源文件到项目中。主要是BackGround.jpg、query.ico、report.ico、whitebox.ico
 4个文件。
连编项目文件,得到可执行文件whitebox.exe,运行它,如图2、3、4所示。其中图3、4分别是
 
点击工具栏的"显示查询结果"和"预览报表"按钮所出现的结果。
  通过以上例子我们可以看出"白框"―VFP的主窗口是值得一用的,因为它可以利用VFP的很多特性,方便编程,尽管这样做可能不太方便。当然,如果你觉得你设计的你自己设计的表单更好,那就用你自已的吧,我只是给出一种方法供大家根据自己的情况参考而已。
我的建议是当你的软件中要用到大量的诸如:
    1.输出到屏幕的查询
    2.报表预览
    3.在状态栏中随时显示当前工作区数据表的情况(如记录指针位置)
等等功能时,使用本文介绍的方法。而对于其它情况则可自行设计表单作为主窗口,而对原主窗口,则采用前面介绍的隐藏方法将其隐藏。
  由于本人水平有限,本文如有错误或不足之处,欢迎批评指正!另外你若有疑问,也欢迎来信提出,我将尽力解答。我的E-Mail是
libijun1982@gmail.com。

                              21:09 04-3-9

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值