PB窗口基础

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 } } } )

你可能感兴趣的:(PB对象属性及使用)