《(精品)第6章窗口.ppt》由会员分享,可在线阅读,更多相关《(精品)第6章窗口.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第6 6章章 窗口窗口教学目标教学重点教学过程教学目标了解创建窗体的基本步骤了解如何添加窗体控件了解窗体属性的设置了解窗体事件教学重点窗体的属性设置窗体的方法和事件教学过程窗口类型创建窗体设置窗体属性窗口事件窗口函数6.1 窗口类型PB提供了六种窗口类型,他们的表现风格和使用环境不同。主窗口弹出式窗口子窗口响应窗口多文档界面窗口带微帮助的多文档界面窗口Main(主窗口):主窗口是可以独立存在、不依赖于任何其它窗口的窗口,在执行应用程序过程中,获得焦点时会覆盖其它窗口,失去焦点时又会被其它窗口所覆盖。主窗体一般还可以称为父窗体,通常作为一个应用程序的启动界面,可以有菜单、工具栏、最大化、最小化
2、按钮等。它可以被最大化、最小化,也可以嵌入菜单,但菜单中若有工具栏,则工具栏不能被显示,若在显示菜单的同时,也要显示与菜单项对应的工具栏,则应选择MDI或MDIHelp类型的窗口。Popup(弹出式窗口)Popup(弹出式窗口):弹出式窗口通常由另一个窗口打开,打开它的窗口称为它的父窗口,它可以覆盖父窗口,也可以移出父窗口,但不能被父窗口覆盖,它总是显示在父窗口的前面。弹出式窗体在打开后,焦点自动指向弹出窗体并在弹出窗口上执行相应的操作;只有将弹出窗口关闭后,其祖先窗口才可能重新获得焦点。弹出式窗口可以被最大化、最小化,也可以拥有自己的菜单,当弹出式窗口被最小化时,它以图标形式显示在屏幕底部,
3、而不是在父窗口中;当弹出式窗口最大化时,最大化到整个屏幕,而不仅仅覆盖父窗口部分;当父窗口最小化时,弹出式窗口随其隐藏,当父窗口被关闭时,弹出式窗口也随之关闭。Child(子窗口)子窗口也是由另一个窗口打开,打开它的窗口是它的父窗口,父窗口可以是主窗口或弹出式窗口。子窗口不能移出父窗口范围,只能在父窗口范围内移动,当移动子窗口时,子窗口移出父窗口部分变为不可见;当移动父窗口时,子窗口也随之移动,并且保持与父窗口相对位置不变。子窗口没有菜单,也不能被当作当前活动窗口,但它可以被最大化和最小化,当被最小化时,图标显示在父窗口中,当被最大化时,它充满整个父窗口工作区,当父窗口关闭时,它也被关闭。Re
4、sponse(响应窗口)响应窗口是一种应答式窗口,用于向用户请求信息,并且要得到用户的应答,响应窗口通常在另一窗口(父窗口)中打开,但它的父窗口不能是响应窗口。当响应窗口获得焦点成为活动窗口时,用户必须应答该响应窗口或关闭该响应窗口,才能访问其它窗口。MDI(多文档界面窗口):MDI窗口是一个最先打开的窗口,它充当其它窗口的容器,任何时候在MDI中打开的窗口叫做一个工作表,工作表只能在框架内活动,若把它极小化,就变成一个位于框架底部的图标。多文档窗体可以在一个主窗体中可以打开多个子文档窗体,例如word程序。多文档窗体创建方法和主窗体相同,只需要将Properties窗口中的WindowTyp
5、e下拉列表框选择Mdi!选项即可。MDIHelp(带微帮助的多文档界面窗口):MDIHelp类似于MDI窗口,但MDIHelp窗口在底部多了一个状态栏,用于向用户显示当前应用程序的一些简短信息和帮助信息。6.2 创建窗口创建窗口 6.2.1 创建窗口对象创建新窗口一般要经过以下五个步骤:打开窗口画板;新建一个窗口,定义窗口的属性;在窗口中添加控件;为窗口和窗口中的控件编写脚本;预览并存盘。1.单击菜单【File|New】。2.选择【PB Object|Window】图标,同时注意Target文本框中是否是创建窗口所在的应用程序,若名称正确,则点击【OK】按钮。出现窗口界面,如下图。3.上图右边
6、部分设置窗口属性。左边部分底部的第一个标签Layout用来设计窗口的格局,如在窗口中添加按钮、文字等;第二个标签open用来给窗口及窗口中的控件编写脚本;第五个标签Declare Instance Variables用来定义非局部变量。4.窗口属性、控件、脚本设置完毕(也可以部分设置)后,点击菜单【File|Save】,在Windows文本框输入新建窗口的名称(窗口名按规则用w_打头),在Comments文本框输入窗口的注释,输入完毕后点击【OK】按钮即可完成。6.2.2 继承一个窗口1.点击菜单【File|Inherit】。2.选择祖先窗口所在的目标文件(Target)、库文件(Librar
7、ies)、对象类型(Objects of Type)选择Windows,并输入或选择窗口名称之后点击OK按钮。3.对继承的窗口根据需要进行适当的修改,然后保存。使用继承方法创建窗口有以下优点:当修改祖先窗口后,该窗口的所有后代窗口都会随之做相应修改。在程序代码和应用窗口中获得了一致性。注意:不能删除继承窗口中的原有控件,也不能修改和删除原有的脚本程序,若不想使用某个控件,可以不选择这个控件的Visible属性,使这个控件不显示。6.2.3窗口画板布局视图区窗口属性区函数列表区脚本编辑区结构列表区结构定义区控件列表区事件列表区非可视对象列表区布局和属性视图布局和属性视图 布局(Layout)视图
8、用来设计和显示对象及其控件的布局和外观。属性(Properties)视图显示对象、控件或者对象中不可视部分的属性。如果打开了属性视图,并且从布局视图或控件列表视图中选择了一个控件,则控件的属性将显示在属性视图中,我们可以设置或修改这些属性。脚本视图脚本视图 在脚本(Script)视图中,可以编辑事件和函数的脚本,定义、修改用户事件和函数,声明变量和外部函数,查看祖先对象的脚本。若在函数列表视图中双击一函数,该函数的脚本将显示在脚本视图中。如果从函数列表视图中拖动一函数到脚本视图中,则脚本视图中显示的将是该函数的脚本。若想覆盖系统定义的函数,只需在脚本视图中输入覆盖的代码。函数列表函数列表视图视
9、图 函数列表视图列出了系统定义的函数和用户自定义的对象级的函数。函数旁的图标标识了该函数是否有脚本,是否带有脚本的继承函数,或者是否带祖先脚本和自身脚本的继承函数。事件列表视图事件列表视图事件列表(Event List)视图显示了对象默认的和用户定义的事件原型。事件的图标标识了该事件是否有脚本,是否带脚本的继承事件,以及是否带祖先脚本和自身脚本的继承事件。窗格的标题栏 每一个窗格都具有可以持久显示也可以暂时显示的标题栏,在左上角有一句柄,可以将窗格拖动到新的位置。窗格和相邻窗格之间有分隔条,可以调整大小。用户可以按自己的需要来决定画板窗口的视图布局。显示窗格标题栏:将鼠标指针移动到窗个顶层的分
10、割条上,标题栏会显示出来。单击标题栏左边的图钉,或者从标题栏快捷菜单中选择“Pinned”项。再次单击图钉会将标题栏隐藏起来。6.2.4 预览、运行和打印窗口 1.预览、运行窗口 打开设计窗口后,选择菜单【Design|Preview】,可预览窗口。选择Painterbar上的【Preview】按钮,可预览窗口。选择Powerbar上的【Run/Preview】按钮,在弹出的对话框中选择要预览的窗口,点击【OK】按钮,可预览、运行窗口。2 打印窗口 窗口打开后,选择菜单【File|Print】,就可打印窗口。6.3 设置窗口属性 窗口属性定义窗口的外观、行为和状态,即窗口的变现风格。窗口属性不
11、同,呈现给用户的界面就有所区别,可以根据需要来设置窗口的属性。打开要设置属性的窗口,在窗口的任意空白处点击右键,选择Properties,或选择菜单【View|Properties】,就打开了窗口的属性窗口。窗口属性共有4页:General、Scroll、Toolbar、Other。设置设置General页页 1.指定窗口类型:单击WindowType下拉式列表框,从中选择合适的窗口类型。窗口类型有以下六种:主窗体 子窗体 弹出式窗体应答窗体多文档窗体 多文档微帮助窗体2.指定窗口菜单:在Menu Name后面指定菜单名称。3.选择窗口图标:点击Icon属性下拉列表框右边按钮,从中选择一个系统
12、预定义图标,或点击右边的Browse按钮指定一个图标文件即可。4.设置窗口颜色:设置窗口的背景颜色:从BackColor下拉列表框中选择颜色;设置MDI窗口工作区颜色:从MDIClientColor下拉列表框中选择颜色。5.Title:窗口的标题,默认的标题是Untitled,有的窗口类型可以输入标题,有的不能输入标题,这可根据该项是否是可输入状态而定。6.Visible:选择该项,表示打开的窗口处于可视状态,否则窗口虽然已经打开但不能显示在屏幕上。7.Enabled:选择该项表示窗口处于可使用状态,否则窗口及窗口中的控件不能使用。8.Control Menu:选择该项表示在窗口的标题栏上可以
13、使用控制框,包括窗口左上角的控制菜单项、窗口右上角的关闭控制项;不选择该项表示不能使用窗口标题栏上的所有控制框。9.MaxBox:在选择Control Menu的同时再选择该项,则在窗口的右上角显示最大化按钮,点击最大化按钮,窗口变为最大化状态同时最大化按钮变为还原按钮,点击还原按钮回到窗口的初始状态。10.MinBox:在选择Control Menu的同时再选择该项,则在窗口的右上角显示最小化按钮,点击最小化按钮,窗口在屏幕底部缩为一个图标,点击图标回到窗口的初始状态。11.Border:指定窗口周围是否要加边框,只有子窗口、弹出式窗口可以不加边框,其它窗口系统自动加上边框,并且用户不能将边
14、框去除。12.Resizable:指定在程序运行过程中,用户是否可以改变窗口的大小,系统指定响应窗口不能改变其大小。13.WindowState:指定窗口第一次显示在屏幕上的方式,这里方式有三种:Normal表示按照窗口定义的大小和位置显示在屏幕上,Maximized表 示 以 最 大 化 显 示 窗 口,Minimized表示以最小化显示窗口。该页用于定义滚动条参数。(1)HScroll Bar:指定窗口中是否具有水平滚动条。窗口显示的大小不能无限增大,有时希望看到区域右边内容,可选择该项。(2)VScroll Bar:指定窗口中是否具有垂直滚动条。当窗口垂直方向内容较多,希望能看到显示区域
15、以外内容,可选择该项。(3)UnitsPerLine:单击垂直滚动条上下箭头时,垂直滚动条滑块每次上下移动的单位数。当值为0时,每次滚动窗口高度的1/100。(4)UnitsPerColumn:单击水平滚动条左右箭头时,水平滚动条滑块每次左右移动的单位数。当值为0时,每次滚动窗口宽度的1/100。设置Scroll页(5)ColumnsPerPage:单击水平滚动条上的任意位置,滑块左右滚动的列数。默认情况下该值为0,滚动10列。(6)LinesPerPage:单击垂直滚动条上的任意位置,滑块上下滚动的行数。默认情况下该值为0,滚动10行。设置Toolbar页在Properties窗口中的Too
16、lbar选项卡中可以设置窗体上工具栏的属性包括是否可见、工具栏的高度和宽度等。Toolbar选项卡中的各属性设置项含义如下所示:ToolbarVisible设置窗口中的工具条是否显示出来。属性值为True时显示,否则为False时不显示。ToolbarAlignment设置工具条在一个MDI窗口中的显示位置。ToolbarX设置当工具条以窗口方式浮动显示时工具条窗口左上角距MDI窗口左边界的距离。用于MDI窗口。ToolbarY设置当工具条以窗口方式浮动显示时工具条窗口左上角距MDI窗口上边界的距离。用于MDI窗口。ToolbarWidth设置当工具条以窗口方式浮动显示时工具条窗口的宽度。用于
17、MDI窗口。ToolbarHeight设置当工具条以窗口方式浮动显示时工具条窗口的高度。用于MDI窗口。设置Other页(1)X:窗口左上角距屏幕或其父窗口客户区左边界的距离。(2)Y:窗口左上角距屏幕或其父窗口客户区上边界的距离。(3)Width:窗口的左右宽度。(4)Height:窗口的上下高度。(5)Pointer:鼠标移到该窗口区域内时鼠标的形状,可以点击下拉列表框,选择系统预定义的形状,或点击右边按钮,选择文件来定义鼠标形状。在代码中设置窗口属性在代码中设置窗口属性在程序运行时可以通过脚本控制窗口的某些属性。其语法格式为:窗口名称.属性=属性值例如:要设置窗口的显示属性为false,
18、则使用如下语句:窗口名称.visible=falsePowerBuilder程序采用事件驱动工作方式,程序的运行没有固定的流程,程序中的代码也是为各种可能发生的事件编写的,当程序开始运行之后,它就可以接受来自系统、用户或者其它应用程序触发的事件,然后执行相应的事件代码。PowerBuilder 9.0中为窗体定义了很多事件,包括Open、MouseDown、Show等,当触发窗体的这些事件时使得应用程序执行相应的程序代码,从而实现应用程序的各种功能。下面列出了几个常用事件。6.4 窗口事件(1)Activate事件该事件在窗口成为活动窗口时、得到输入焦点之前触发,并且窗口中Tab值最小的那个控
19、件得到输入焦点。这个事件没有参数,只有唯一的返回值0,表示继续操作。dw_1.settransobject(sqlca)dw_1.retrieve()(2)Open事件打开窗口时触发该事件,它发生在窗口被打开之后,未显示之前。这个事件没有参数,只有唯一的返回值0,表示继续操作。当窗口的Open事件被触发时,也会触发一些其它事件,如Activate事件、Show事件,窗口上各个控件的Constructor事件等。通常在该事件中初始化窗口中的一些变量和控件,也可以设置数据窗口和事务对象的关联关系等。如在窗口的Open事件中将数据窗口控件与事务对象连接并检索数据。(3)Clicked事件当用户点击窗
20、口中没有被控件覆盖的地方,在释放鼠标左键之后就会触发窗口的Clicked事件。若用户点击的是一个可用且可见的控件,就会触发这个控件的Clicked事件,而不会触发窗口的Clicked事件。Clicked事件有三个参数,Flags、Xpos、Ypos,Flags表示用户单击鼠标左键的同时,是否还单击了鼠标上别的键或按了键盘上的键,Xpos、Ypos分别代表鼠标单击的X坐标和Y坐标。它只有唯一的返回值0,表示继续操作。窗口的Clicked和DoubleClicked事件被触发之前,先触发MouseUp和MouseDown事件。在触发DoubleClicked事件之前,先触发Clicked事件。(4
21、)Close事件关闭窗口时触发该事件,通常将一些善后的事情放在这个事件中完成。(5)CloseQuery事件关闭窗口时,在Close事件之前被触发。该事件有两个返回值,0代表可以关闭窗口,继续执行;1代表不能关闭窗口。(6)DoubleClicked事件当双击窗口上任何没有被控件覆盖的地方就触发该事件。它的返回值和参数与Clicked事件相同。(7)Show窗口显示时发生。窗口的Show函数将触发该事件。(8)Hide窗口被隐藏前的瞬间发生。(9)Resize窗口大小发生变化时发生,窗口被打开时也产生此事件。(10)Timer调用Timer函数启动定时器,在设定时间到后发生。6.5 窗口函数1
22、、Open(windowvar,Parent):用于打开窗口。Open函数还有第二种语法格式:open(windowvar,wintdowtype,parent)6.5.1PowerBuilder窗口函数窗口函数2、openwithparm(windowvar,parameter,parent)用于带参数打开窗口。打开窗口时,openwithparm函数把参数parameter保存到系统默认的全局对象Message中,根据数据类型的不同,在被打开窗口的事件处理程序中,通过检查Message对象的相应属性得到打开函数传递来的参数值。参数类型及Message对象相应属性的对应关系如表所示。Para
23、meter数据类型使用的Message属性NumericMessage.DoubleParmPowerObject(包含各种对象以及用户自定义结构)Message.PowerObjectParmStringMessage.StringParm注意:Message对象是全局变量,其他程序可能会使用,因此,要尽早检查Message对象相应属性,并取出参数做保存。3、Close():用于关闭窗口。如:close(w_main)4、OpenWithParm:打开窗口时带参数。5、CloseWithReturn:关闭窗口时向打开该窗口的程序返回一个值。语法格式:closewithreturn(windo
24、wname,returnvalue)返回值保存在Message对象的属性中。6、show:显示窗口。7、Hide:返回数据类型为整型.,用于隐藏窗口。如果返回值为1操作成功,否则,返回值为-1。8、Move:返回数据类型为整型。用于移动窗口。如果返回值为1,操作成功,否则,返回值为-1;参数是NULL,则返回NULL。9、Resize:改变窗口大小。10、OpenSheet:打开表单窗口。11、GetActiveSheet:返回当前活动表单窗口。12、GetFirstSheet:返回第一个表单窗口。13、SetMicroHelp:在状态栏中显示指定字符串。14、TriggerEvent:触发指
25、定事件。15、PostEvent:将事件放入事件队列。16.ArrangeSheet:此方法用于排列MDI框架中的表单或图标。返回数据类型为整型。返回值为1成功,否则,返回值为-1失败。17.ChangeMenu:用于更换与窗口相关联的菜单。其中,参数position只适用于MDI框架类型的窗口。6.5.2用户自定义窗口函数在事件脚本编程中,编程人员可以自定义一些窗口函数,使用自定义函数的优点是程序简洁明了,易于维护,并且代码实现共享,移植方便。1、进入函数定义区2、函数定义区在函数定义区为函数命名,定义是否有返回值、返回值类型、参数。3、编写函数代码4、函数的使用函数的使用有静态调用和动态调
26、用两种方式,前者是系统默认的函数调用方式,应用方式最多。静态调用就是系统在编译代码时就对函数进行彻底地编译。动态调用的函数在程序执行时才会去查找和调用函数,而在程序编译时可以没有该函数。动态调用的方法是在函数名前加上dynamic。6.6多文档界面多文档界面是一种十分流行的界面风格,一般说来,如果要建立一个能在其中打开多个窗口、并且易于在打开的多个窗口之间灵活切换的应用程序时,最好采用这个风格。6.6.1 多文档界面的构成及有关概念多文档界面的构成及有关概念典型的MDI窗口由六部分组成:菜单栏、工具栏、框架、客户区、工作表、状态栏。多文档界面的应用程序的特点:有一个最先显示的主窗口MDI框架窗
27、口,其他窗口在主窗口中打开,其他窗口称为工作表。工作表只能在MDI框架窗口中移动而不能被移出框架窗口。6.6.2创建多文档界面创建一个完整的MDI界面通常要完成下述工作:建立MDI框架窗口;创建工作表;建立MDI应用程序中的菜单;设置微帮助;设置工具栏。6.7 窗口编程6.7.1在窗口中编写脚本脚本的编写都是在各种事件的响应处进行。脚本采用PowerScript语言编写。6.7.2窗口设计实例设计一个窗口应用程序,运行程序时打开主窗口,在主窗口单击鼠标右键后,每隔10s弹出一个消息对话框。再次单击右键则停止弹出消息对话框,在主窗口单击左键就弹出一个响应式窗口。设计思路:(1)建立一个工作空间和应用(2)建立一个主窗口对象。(3)在窗口的mousedown、rbuttondown事件和timer事件中编写代码。