您好,欢迎访问三七文档
3.13.2创建新的窗口对象窗口属性3.33.4窗口函数窗口事件3.5窗口编程3.1.1创建窗口对象的过程具体步骤是,单击工具栏上的“New”图标按钮,弹出“New”属性页对话框,选择“PBObject”页,双击Windows图标或选中Windows图标后单击“OK”按钮,就创建了一个新的空白窗口,如图3.1所示。实现窗口继承的方法比较简单,只要单击“继承”按钮,就会弹出选择继承对象的对话框,首先选择对象类型(ObjectType)为窗口(Windows),然后在上面列出的窗口对象列表单中选择要继承的祖先窗口,双击鼠标左键选中或单击后,再单击“OK”按钮确定,如图3.2所示。窗口各区域的用途见表3.1的说明。各区域的大小可以随意调节,各区域在窗口画板中的位置也可以自行设置,方法是将光标移到标题栏处,按下鼠标左键将光标拖曳到适当的位置即可。区域的打开可以在View选单项下进行选择,如图3.3所示。在窗口的设计过程中,可以随时预览设计窗口在实际运行时的外貌,方法是单击工具栏上的“Preview”图标,或单击选单标题“Design”下的“Preview”选单项,也可以直接使用【Ctrl+Shift+P】组合键。窗口属性表共有四页,每一页的作用见表3.2。窗口的基本特征属性页如图3.4所示。窗口的基本特征属性页中有13个复选框,控制着13个布尔变量,其作用见表3.3。窗口的类型是按照窗口具有不完全相同的外部和内部特征划分的。PowerBuilder中窗口的类型有六种,默认为主窗口类型。每种窗口的类型和特点见表3.4。窗口的滚动属性页如图3.5所示。应用程序窗口的工具栏属性页如图3.6所示。工具栏可视性ToolbarVisible复选框选中与否决定了是否显示工具栏。工具栏放置的位置有五种,见表3.5。窗口的其他属性页如图3.7所示。3.3.1PowerBuilder窗口函数表3.6详细介绍了几个常用窗口函数及其使用方法。传递参数的具体要求如下。(1)传递参数只能是字符串、数值或PowerBuilder对象。(2)传递参数存储在Message对象的相应属性中,即字符串在Message.StringParm中;数值在Message.DoubleParm中;PowerBuilder对象在Message.PowerObjectParm中。(3)若要返回多个值,则应创建存放传递参数的用户自定义结构,访问Message对象的PowerObjectParm属性。(4)若传递事件参数为word或long数据类型,则传递参数存储在Message对象的相应属性中,即WordParm和LongParm中。如果Long参数值为字符串,则可在被触发的事件中,使用String函数,并用address关键字指定参数的格式。例如:Strings_myparms_myparm=String(Message.LongParm,address)1.进入函数定义区如果函数定义区没有打开,则可以用下列两种办法之一将其打开。(1)单击“Insert”选单标题下的“Function”选单项,如图3.8所示。(2)单击脚本子窗口左上边的下拉列表框的小三角,选择弹出列表选项中的“Functions”项,如图3.9所示。2.函数定义区弹出的函数定义区如图3.10所示。在“ReturnValue”栏中选择返回值的数据类型。在“FunctionName”栏中输入函数的名称。定义函数的入口参数,入口参数可以没有,也可以有多个。在“Value”下拉列表框中选择入口参数的传递方式,见表3.7。3.编写函数代码在函数定义区下部的脚本区编写函数代码,完成函数的定义。4.函数的使用函数的使用有静态调用和动态调用两种方式,前者是系统默认的函数调用方式,应用最多。所谓静态调用,就是系统在编译代码时就对函数进行彻底编译,对返回值及入口参数进行检查和匹配,出现问题就立即报告错误。例如,在窗口w_1中定义了一个整型数的加法运算函数IntegerAddFunc(Integeradd1,Integeradd2),则静态调用的方法如下:Integervalue=w_1.AddFunc(123,456)动态调用的方法是在函数名称前加上“Dynamic”。动态调用的方法示例:Integervalue=w_1.DynamicAddFunc(123,456)表3.8列出了窗口的主要事件。窗口对象中最常用的事件是Open、Close、CloseQuery、Key、Timer、DragDrop、Resize等。编写窗口的事件处理程序的步骤如下。(1)打开该窗口。(2)如果脚本编辑区没有打开,则可使用鼠标右键单击视图编辑区中设计的窗口(不要单击窗口上的任何控件,该步操作的目的是选中窗口,打开右键选单),单击选单中的“Script”选单项,即可打开脚本编辑区。(3)首先在“选择事件”列表框中选择要编程的事件,如Open(),然后根据应用需要编写特定的程序。一般来说,在窗口“Open”事件中,要安排窗口中控件和数据窗口的初始化程序。例如,在第2章2.8节应用程序编程实例中,计算器应用程序的窗口的“Key”事件中,要设计一种捕捉用户的按键,并根据按键的类型进行不同的处理的功能。可以在窗口的“Key”事件脚本区中编写如下代码(如图3.11所示)://key为系统捕捉到的用户按键,keyenter!为回车键的枚举值IFkey=keyenter!THENcb_17.triggerEvent(Clicked!)//触发cb_17控件的Clicked事件ENDIF一般情况下,窗口的“Open”事件是对窗口及窗口中控件进行初始化的地方,编写脚本的机会最多。例如,下面的代码对窗口中的数据窗口建立事务对象,并将检索数据放入数据窗口中,同时,对窗口中的各种控件进行初始化,采用了对控件属性直接赋值和使用控件函数的方法。//数据窗口的初始化dw_1.SetTransObject(SQLCA)//为数据窗口dw_1建立事务对象dw_1.Retrieve()//将检索数据放入数据窗口dw_1中//对控件的属性编程sle_1.enabled=FALSEsle_2.enabled=TRUErb_1.checked=TRUEddlb_1.text=一系//使用控件的函数编程ddlb_1.AddItem(一系)ddlb_1.AddItem(二系)ddlb_1.AddItem(三系)【例3.1】设计一个窗口应用程序,运行程序时打开主窗口,在主窗口中单击鼠标右键后,每隔5s弹出一个消息对话框,再次单击鼠标右键则停止弹出消息对话框;在主窗口中单击鼠标左键就弹出一个响应式子窗口。1.建立工作空间和应用建立一个新的工作空间和“应用”(exwin)(创建方法参见第1章中1.2节的简单应用程序实例部分)。2.建立一个主窗口对象设置窗口对象的“General”属性页中的“Title”为“应用程序主窗口”,窗口类型为“main!”,保存窗口名称为“w_mainwin”。再创建一个响应式窗口,设置窗口对象的“General”属性页中的“Title”为“响应鼠标左键窗口”,选择窗口类型为response!(如图3.12所示),在“Other”属性页中设置“Position”的X值为100,Y值为80,保存窗口名称为“w_respwin”。3.为主窗口对象编写脚本(1)首先声明一个窗口布尔变量“TimerFlag”用于控制定时器的启停,方法是在脚本区左上角的对象下拉列表框中选中“(Declare)”,在中间的事件下拉列表框中选择“InstanceVariables”,然后在脚本区中输入如下变量声明并对该变量进行初始化(如图3.13所示):BooleanTimerFlag=FALSE(2)在脚本区左上角的对象下拉列表框中选择“w_mainwin”,在事件下拉列表框中选择“mousedown”事件,输入打开窗口的脚本:Open(w_respwin)(3)选择“w_mainwin”的“rbuttondown”事件,输入脚本:IFTimerFlag=FALSETHENTimer(5)TimerFlag=TRUEELSETimer(0)TimerFlag=FALSEENDIF(4)选择“w_mainwin”的“timer”事件,输入显示“消息框”脚本:MessageBox(消息框,计时时间到)4.打开主窗口脚本在应用程序入口编写打开主窗口的脚本,其方法是在系统树状结构区双击“应用”(exwin),在弹出的“应用”的“Open”事件脚本区中编写如下代码:Open(w_mainwin)5.运行应用程序保存并运行应用程序。在应用程序主窗口中,按下鼠标左键,弹出一个响应窗口。单击鼠标右键后,每隔5s,弹出一个“计时时间到”消息框,再单击一下鼠标右键,定时结束,不再弹出消息框。
本文标题:第3章 窗 口
链接地址:https://www.777doc.com/doc-7087567 .html