window对象
【其他】
■窗口画板的定制:Design-Options
■窗口类型:Main(可以使用菜单)、Child(不能使用菜单)、Response(如messagebox函数弹出的窗口,继续执行程序之前必须对其做出响应;不能使用菜单)、Popup(可以使用菜单)、MDI(必须有菜单)、DIHelp(必须有菜单)
【属性】
代码中修改属性:窗口名称.属性名称 = 属性值
▲Title
窗口的标题
▲Tag
和窗口相关的一个文本属性,可以理解成窗口的注释
▲MenuName
和窗口相连的菜单
▲Visible
窗口是否可见
▲Enabled
确定窗口的功能是否可用
▲TitleBar
确定窗口是否有标题栏
▲ControlMenu、MaxBox、MinBox
三个属性确定在窗口的标题栏是否显示最大、最小以及关闭按钮
▲ClientEdge
是否显示用户工作区边框
▲PaletteWindow
该属性只用于Popup类型的窗口,确定是否显示标题栏图标和最大、最小按钮
▲ContextHelp
只用在Response类型的窗口上。确定是否支持上下文帮助。如果支持就在窗口的右上角显示一个问号图标
▲RightToLeft
确定由右到左的显示
▲Center
窗口居中显示
▲Resizable
决定窗口在运行时是否可以改变其大小
▲Border
决定窗口是否有边框
▲WindowType
确定窗口的类型
▲BackColor
设置窗口的背景颜色
▲MdiClientColor
用来确定MDI用户区的颜色
▲Icon
用来设置窗口标题栏的图标
▲HscrollBar、VscrollBar
是否需要显示水平或者垂直滚动条
▲UnitsPerLine
用户在垂直滚动条上每次单击移动的PB单位数。默认为0,表示每次滚动窗口的1/100
▲ColumnsPerPage
表示每页显示的列数,默认为0,表示显示10列
▲LinesPerPage
表示每页显示的行数,默认为0,表示显示10行
▲ToolBarVisible
工具条是否可见
▲ToolBarAligment
确定工具条在窗口上的初始位置,有5个可用的枚举型取值:AlignAtBootom!(底部)、AlignAtLeft!(左)、AlignAtRight!(右)、AlignAtTop!(顶部)、Floating!(浮动)
▲ToolBarX、ToolBarY、ToolBarHeight、ToolBarWidth
用来设置当工具条浮动显示时工具条的起始位置及高宽。默认取值都是0
▲X、Y、Width、Height、Pointer
设置窗口的真实坐标、宽高和鼠标的默认指针
▲Control[]
该属性是一个保存窗口中所有对象的一个数组,在应用程序中只能读取该数组的属性,不能修改。使用该数组可以访问窗口中的所有对象,当要对窗口中的所有对象(或者大多数)都进行操作或者要查找窗口中的某种对象时,通常要使用该数组。
integer li_total,li_i
object lobj_any
li_total = upperbound(this.control[])
for li_i = 1 to li_total
lobj_any = this.control[li_i].typeof()
next
▲MenuId
窗口对象MenuId属性保存的是与窗口相联系的的菜单,是一Menu类型的属性。使用该属性可以继续引用Menu菜单的属性,访问菜单及其他的项目
messagebox("",this.menuid.text)
//通过menuid引用菜单中的文字
【事件】
窗口中的事件触发顺序:Constructor-Open-Activate-CloseQuery-Close-Deconstructor
◆Activate和Deactivate
Activate事件在窗口成为活动窗口之前、Open事件触发完后触发。该事件触发时,窗口Tab值最小的控件获得焦点,如果没有可视控件,则窗口获得焦点Deactivate事件在窗口失去焦点并且变为非活动状态时触发
◆Open
Open事件在窗口打开时触发。具体是窗口上所有控件已经构造完毕(即窗口上所有控件的Constructor事件已经完成),但是还没有被显示出来的时候。注意:在Open事件中,用来设置窗口刷新属性的函数SetRedraw()不可用
◆Close和CloseQuery
CloseQuery事件在Close事件触发之前发生,返回1,表示取消关闭动作;返回0,表示继续执行Close事件。
◆Resize
该事件在窗口打开或者形状发生变化时触发。
参数newwidth、newheight是两个Integer类型的参数,用来获取改变后窗口的宽度和高度,以便和原来的宽度、高比较获取大小变化比例,用该比例对其他控件进行一定的调整。
可以在窗口的Resize事件中编写脚本,当用户调整窗口大小时,根据用户调整的比例对窗口上的控件大小进行调整。
首先定义两个实例变量用来保存调整之前的窗口大小,在窗口的Open事件中对这两个实例变量初始化,脚本如下:
ii_width = This.width
ii_height = This.height
然后在窗口的Resize事件中编写如下脚本:
integer li_index
dragobject ldo_all
for li_index = 1 to upperbound(this.control[])
ldo_all = this.control[li_index]
ldo_all.x = ldo_all.x * (newwidth / ii_width)
ldo_all.y = ldo_all.y * (newheight / ii_height)
ldo_all.width = ldo_all.width * (newwidth / ii_width)
ldo_all.height = ldo_all.height * (newheight / ii_height)
next
ii_width = newwidth
ii_height = newheight
【函数】
★Open
该函数用来打开其他的窗口,触发窗口的Open事件
如果对同一个窗口连续两次调用Open函数,该窗口并不被打开两次,只是在第二次调用Open函数时再次触发该窗口Activate事件,要避免这种情况,可以将代码修改为:
if not isvaild(w_main) then
open(w_main)
else
w_main.bringtotop = true
end if
如果希望打开相同的窗口多次,则要用窗口实例
★Close
关闭窗口,释放窗口及其上面的控件所占用的内存空间,窗口的CloseQuery事件和Close事件触发
★MessageBox
MessageBox ( title, text {, icon {, button {, default } } } )