只所以在这里把_screen作为技术篇一个单独的问题提出来,是因为作为主窗口的_screen对象相对与其他一般表单,有许多的特殊之处,但是,大家在进行程序设计的时候,无一例外全部都要遇到主窗口的属性设置问题,所以把它单独的作为技术篇中的一个单独题目,也就不足为怪了!
在我想写这篇文章的时候,无意中在“狐友俱乐部”中见到了茉莉花写的一篇关于_screen的文章,所以便来个借花献佛,对于其中一些未提及的问题稍微做了一些补充,以饷大家,让我们向茉莉花表示衷心的感谢!
在VisualFoxPro中充分利用_SCREEN对象,就能对主窗口进行各种操作,如可以动态地改变主窗口的图标、标题、颜色等,也可以通过它引用其它的对象或属性。
_SCREEN对象(即指主窗口)是从表单类派生出来的,表单中的部分属性、事件和方法在_SCREEN对象也存在,因而可以把主窗口当作表单来操作(但也有所不同,如在_SCREEN中不能像表单那样对LOAD、ACTIVATE等事件添加代码,即不能够为_screen指定事件)。
下面举例说明如何利用_SCREEN对象:
1.更改图标和标题
把VFP窗口的小狐狸图标和“MicrosoftVisualFoxPro”标题,改为你所喜欢的图标和标题,只需执行代码
_SCREEN.ICON=″你的图标文件名(.ICO)″
_SCREEN.CAPTION=″你的标题名″
如果需要修改的东西很多,大家也可以用with…endeith进行设定,如:
with _screen
.visible=.t.
.closable=.t.
.controlbox=.t.
.maxbutton=.t.
.minbutton=.t.
.movable=.t.
.top=0
.left=0
.windowstate=2
.caption='建设银行计算机台帐管理系统'
.picture='zhj6.bmp'
.icon='support.ico'
endwith
2.动态地改变主窗口的图标和标题
即让主窗口的图标和标题随时间的变化而变化。这就需要在_SCREEN中加入一个Timer类,Timer类是每经过一定的时间(在Interval属性中设定,单位为毫秒)循环地执行其Timer事件中的代码。方法如下:先定义你的Timer类:点“文件/新建/类/新建文件”,这时弹出一窗口,上面有这几项需要填写:“类名”项填新建类名(如MyTimer),“派生于”项选Timer,“来源于”项不用填,“存储于”项填新建类库名(如MyClass)。确定后出现类设计器(很像表单设计器),上有一小闹钟(Timer控件)把其Interval属性设为1000(时间间隔,毫秒),在Init事件中输入代码:
PUBL NN
NN=0&&NN为变化的标志变量
在Timer事件(每隔一定时间执行)输入:
_SCREEN.ICON=IIF((-1)^NN,″所需加入的图题1″,″图标2″)
_SCREEN.CAPION=IIF((-1)^NN,″所需加入的标题1″,″标题2″)
NN=NN+1
关闭并保存,类建立完毕。
可视地把该类添到_SCREEN中:由于_SCREEN与表单有所区别,故不能用表单设计器工具来完成拖放类定义,而是用“类浏览器”来完成,寻工具/类浏览器”后,弹出一打开窗口,选择刚才建立的类库文件(MYCLASS),确定后,弹出类浏览器窗口,选中MyTimer类,这时在类浏览器的左上角有一小闹钟,把它拖放到主窗口中,你就会惊奇地发现你的主窗口不再是死气沉沉的了。不信?试试!
3.利用_SCREEN得到主窗口内包含的表单数量
执行:?_SCREEN.FORMCOUNT即可
4.在_screen中加入对象(如:图画),举例如下:
_screen.addobject("imge1","quit1") && 建立一副图画
define class quit1 as image
top=-10
left=0
*height=_screen.height-50
*width=_screen.width-50
picture='main_bmp.bmp'
backstyle=0
visible=.t.
* stretch=1
procedure click
quit
endproc
enddefine
基于这个例子,上面第2个问题中加入timer类的问题可以这样解决:
_screen.addobject("tmr1","caption1") &&建立一个timer
define class caption1 as timer1
Interval=1000
procedure init
PUBL NN
NN=0&&NN为变化的标志变量
endproc
procedure timer
_SCREEN.ICON=IIF((-1)^NN,″所需加入的图题1″,″图标2″)
_SCREEN.CAPION=IIF((-1)^NN,″所需加入的标题1″,″标题2″)
NN=NN+1
endproc
enddefine
以上是有关_SCREEN对象的简单阐述,想要你的窗口美化起来,具体的工作还需要你自己去做。
|