PB教程第六章窗口与控件
PB学习之第六部关于PB的控件
第六章PB控件
6.3常用控件介绍
6.3.7下拉列表框(DropDownListBox)控件
• 函数
• AddItem()在列表中增加项
• Clear()清除列表中选择的项
• Reset()删除列表中所有的项
• TotalItems()返回列表中所有项的和
• InsertItem()在列表中的指定位置添加新的项 FindItem()返回指定字符在列表中的第一个 被找到的项
第六章PB控件
6.3常用控件介绍 6.3.3单行编辑框(SingleLineEdit)控件
用来接收用户输入的字符串,而这个字符串只有一行。
• 静态文本的属性 DisplayOnly:设定用户是否可以编辑编辑框中的内容 Password:控件中的内容是否以星号显示 AutoHScroll:当用户输入的字符串的长度超过了编辑框 所能显示的宽度时,是否自动在水平方向滚动这些文 字。
第六章PB控件
6.3常用控件介绍 6.3.5复选框(CheckBox)控件
复选框经常用来表示一个布尔值,从而充当一 个开关,复选框通常有两个状态,但PB中的复 选框却可以拥有三个状态。
• 复选框的属性 Checked:复选框是否被选中。 ThreeState:指定复选框是否能够表示三种状态。 ThirdState:指定复选框是否处于第三种状态。 LeftText:说明文字在复选框的左部还是右部
第六章PB控件
6.3常用控件介绍
• 6.3.1命令按钮(CommandButton)控件
这种控件用来接收和传递用户的各种命令,当我们单 击某个命令按钮后,系统将会触发一个特定的动作, 实际上PB的命令按钮就是一个标准的不加任何修饰的 Windows按钮,并且这种按钮带有一个表示该按钮功 能的标题。
第6章 窗口控件
6.2.4 复制窗口控件
(1)外观复制:只复制控件的外观和属性,而不复制 (1)外观复制:只复制控件的外观和属性, 外观复制 控件所带的脚本。 控件所带的脚本。选中需要复制的一个或多个控件 后,按Ctrl+T组合键。 Ctrl+T组合键。 组合键 (2)完全复制 不仅复制控件的外观和属性, 完全复制: (2)完全复制:不仅复制控件的外观和属性,而且复 制控件所带的脚本。 制控件所带的脚本。选中需要复制的一个或多个控 件后,使用Ctrl+C复制、Ctrl+V粘贴 Ctrl+C复制 粘贴。 件后,使用Ctrl+C复制、Ctrl+V粘贴。也可使用 Edit菜单项或工具栏中的复制 粘贴功能。 菜单项或工具栏中的复制、 Edit菜单项或工具栏中的复制、粘贴功能。
水平滚动条 垂直滚动条 水平进度条 垂直进度条 水平跟踪条 垂直跟踪条 调整水平位置和 数值 VScrollBar 调整垂直位置和 数值 HProgressBar 水平显示程序或 操作的进度 VProgressBar 垂直显示程序或 操作的进度 HTrackBar 水平刻度显示, 水平刻度显示, 类似滚动条 VTrackBar 垂直刻度显示, 垂直刻度显示, 类似滚动条 HScrollBar hsb_ vsb_ hpb_ vpb_ htb_ vtb_
6.2.6 6.2.6 控件的访问顺序
当窗口上有多个控件时,只有取得焦点的控件, 当窗口上有多个控件时,只有取得焦点的控件, 才可以接受用户信息输入。按照预先设定的顺序, 才可以接受用户信息输入。按照预先设定的顺序, 使用Tab键从一个控件跳转到另一个控件。 键从一个控件跳转到另一个控件。 使用 键从一个控件跳转到另一个控件 当控件被加入到窗口时, 当控件被加入到窗口时,PowerBuilder自动指定 自动指定 一个默认访问顺序,即一个用数字表示的Tab值。 一个默认访问顺序,即一个用数字表示的 值 要使访问顺序符合程序要求,只需设置Tab值。 要使访问顺序符合程序要求,只需设置 值 在窗口画板中选择菜单Design→Tab Order,或 在窗口画板中选择菜单 , 按钮,进入TabOrder模式。Tab值 模式。 单击工具栏上 按钮,进入 模式 值 的控件不能得到焦点, 值小的先得到焦点。 为0的控件不能得到焦点,Tab值小的先得到焦点。 的控件不能得到焦点 值小的先得到焦点 可根据需要修改控件的Tab值。 可根据需要修改控件的 值
pb教程第六章窗口与控件[精品]
第六章窗口与控件窗口是应用程序与用户交流的主要界面。
用它可以显示系统的有关信息,响应用户的鼠标和键盘输入等等。
在这一节中我们将利用PowerBuilder的应用模板功能来创建一个应用程序,利用这个程序来介绍窗口的有关概念和操作。
首先我们利用系统的应用模板功能创建一个应用程序:单击FILE菜单的NEW菜单项,系统弹出SELECT NEW APPLICATION LIBRARY对话框,用来选择一个对象库,这里在D:\DATABASE目录下创建一个新的名为SAMPLE 的对象库,然后单击“保存”按钮,在接下来的SAVE APPLICATION对话框中给新的应用对象同样起名为SAMPLE,然后单击OK按钮确定,系统弹出对话框询问是否需要创建应用模板,这里选择“是”,接着系统就开始为我们生成一个多文档接口的应用程序,APPLICATION画板中显示的就是系统自动帮我们创建好的一些对象(图6-1)。
从对象的图标可以看出这些对象都是窗口和菜单,接下来就以这里的窗口对象为例介绍窗口的有关概念和操作。
图6-16.1 窗口的类型6.2 窗口的常用操作6.3 控件6.1 窗口的类型PowerBuilder提供了六种不同类型的窗口,它们的用途各不相同,下面分别说明:第一种要介绍的是MAIN类型的窗口,它的特点是可以不依赖于任何其它的窗口,可以独立地存在,一个应用程序中可以有多个MAIN窗口,你可以在需要的时候在程序中用OPEN函数打开其中的任意一个。
此外在MAIN窗口中可以放置需要的各种控件。
单击POWERBAR工具条上的WINDOW按钮,选中W-GENAPP-SHEET窗口后单击OK按钮确定所做的操作,然后在WINDOW画板中的窗口对象上单击鼠标右键,选中弹出的菜单的PROPERTIES菜单项,在弹出的WINDOW对话框中注意WINDOW TYPE一栏,可以发现W-GENAPP-SHEET窗口就是MAIN类型的,在其中就可以放入各种控件。
pb中窗口的打开和关闭
pb中窗口的打开和关闭pb中窗口的打开和关闭Close()功能关闭窗口并释放窗口以及窗口上的控件所占据的内存。
语法Close(windowname)参数windowname:要关闭窗口的名称返回值Integer。
函数执行成功时返回1,发生错误时返回-1。
如果参数windowname的值为NULL,Close()函数返回NULL。
用法应用程序使用Open()或其它Open簇函数打开窗口后,不需要窗口时,可以使用Close()关闭窗口并释放窗口以及窗口上所有控件占据的内存。
Close()函数的执行过程为:如果要关闭窗口的CloseQuery和/或Close事件已经编写了事件处理程序,那么执行这些事件处理程序,从屏幕上删除要关闭的窗口、关闭窗口、之后执行调用Close()函数语句后面的语句。
当窗口被关闭后,应用程序就不能再访问已经关闭窗口的属性、实例变量、对象函数、以及窗口上的控件了。
如果关闭窗口后应用程序依然访问上述特性,那么将引发运行错误。
当然,应用程序也可以阻止窗口被关闭,方法很简单,只要在欲阻止关闭窗口的CloseQuery事件处理程序中使用RETURN语句返回1即可,格式为:RETURN1 CloseWithReturn()功能关闭窗口并将返回值保存在Message对象中,该函数只能对响应窗口使用。
语法CloseWithReturn(windowname,returnvalue)参数windowname:要关闭窗口的名称returnvalue:指定关闭窗口时保存到Message对象中的值,调用CloseWithReturn()函数的代码段通过查看Message对象属性的值得到关闭窗口时被关闭窗口传递的值。
returnvalue参数必须是下述三种类型之一:String、Numeric、PowerObject返回值Integer。
函数执行成功时返回1,发生错误时返回-1。
如果参数任何的值为NULL,CloseWithReturn()函数返回NULL。
PB数据窗口教程
PB数据窗口教程数据窗口是PowerBuilder中最常用的控件之一、它用于显示数据库查询结果,并提供了对此结果进行浏览、修改和删除等操作的功能。
本教程将为您介绍如何在PowerBuilder中使用数据窗口控件。
第一步是创建一个数据窗口。
在PowerBuilder的“对象”菜单下,选择“新建”>“数据窗口”。
在弹出的对话框中,选择所需的数据源和表格,并点击“确定”按钮。
此时,将会出现一个空白的数据窗口设计器。
接下来,将需要显示在数据窗口中的列添加到数据窗口中。
您可以通过拖拽数据库字段或手动添加列的方式进行操作。
在设计器的左侧,您将看到一个“对象树”面板,在这里选择数据窗口对象,并右键单击以添加列。
完成列的设置后,您可以在设计器的页面中放置其他控件,以增强用户界面。
一些常用的控件包括文本框、复选框、下拉列表框等。
您可以通过拖拽控件到数据窗口设计器的页面中进行操作,并根据需要设置其属性。
下一步是设置数据窗口的数据源。
在数据窗口设计器的菜单栏中,选择“数据”>“设置数据源”选项。
在弹出的对话框中,选择所需的数据源和表格,并点击“确定”按钮。
此时,数据窗口将会显示数据源中的数据。
现在,您可以运行应用程序,并查看输出窗口中的结果。
您可以通过点击数据窗口中的列标题对数据进行排序,通过点击数据行进行选择,并通过单击“查阅”按钮在查询结果中进行导航。
如果需要,您还可以在数据窗口中进行增加、修改和删除操作。
通过本教程,您应该已经了解了如何在PowerBuilder中创建和使用数据窗口控件。
数据窗口是PowerBuilder开发中非常重要的一部分,掌握了数据窗口的使用方法,可以提升开发效率,并为用户提供更好的用户界面和交互体验。
希望本教程能对您有所帮助!。
pb中数据窗口的应用
Pb中数据窗口的应用在通常的Server/Client方式MIS开发中,总是有没完没了的报表需要制作,调试报表花费的时间也是最多而且乏味,还常常不能满足客户的要求。
要是能够让用户自己调整报表的格式和内容,然后将它保存下来,程序下次启动时它自动调用保存了的报表格式那有多好。
本人通过如下方法最终实现了用的要求。
PB(PowerBuilder)有一种以PSR结尾的特殊的保存报表的文件格式(本文简称作PSR文件)。
根据数据窗口可以直接读取PSR文件生成报表的原理,程序通过生成PSR文件,实现动态报表格式的保存。
一、实现原理:PB中的报表其实就相当于是数据窗口。
第一步,动态报表的实现。
通过设置数据窗口对象(dataobject)中文本、列等的Resizeable 和moveable属性为1来实现对象位置的拖动控制,通过数据窗口的Modify函数实现对象值的更改(包括增加和删除)。
第二步,报表格式的保存。
在一个应用当中,数据窗口对象的名称总是唯一的,将每一个数据窗口对象转化成PSR文件存于数据库表中。
在窗口打开时,程序先校验报表格式是否存在。
如果存在,先将报表格式读取出来放在一个临时文件当中,然后设置数据窗口(datawindow)的数据对象(dataobject)为这个报表文件,然后提取数据;如果不存在,直接提取数据即可。
二、实现过程:1、建立一个数据库表用以保存报表格式文件。
表名:dyn_reportDwobjectVarchar2(20)数据窗口对象名称Primary keyRptitleVarchar2(80)报表的标题名称MemoLong raw 报表格式2、建立一个窗口w_temp。
定义实例变量如下:string is_dwtype,is_dwobject //保存报表中对象的类型及名称控件名称控件含义Dw_print数据窗口对象Cb_exit退出按钮Cb_savereport 报表格式保存按钮3、在窗口的OPEN事件中加入如下代码, 校验报表格式是否存在,如果存在读取定义好的报表格式到数据窗口。
PB的数据窗口操作
PB的数据窗口操作PB(PowerBuilder)是一种基于面向对象的集成开发环境(IDE),主要用于构建企业级应用程序。
在PB中,数据窗口是一项非常重要的功能,可以用于对数据的处理、展示和修改。
下面将从数据窗口的基本操作、高级特性和数据窗口设计原则等方面,详细介绍PB的数据窗口操作。
一、数据窗口的基本操作1. 创建数据窗口:在PB中,可以通过向导或手动创建数据窗口。
创建数据窗口是通过选择数据源(数据库表、视图或存储过程)、选择数据窗口类型(Grid、Tabular等)和设置窗口布局等步骤完成的。
2.数据绑定:在数据窗口中,可以通过数据绑定将数据源与数据窗口中的控件关联起来。
通过设置数据绑定属性,可以实现数据的读取、展示和修改等功能。
3.数据检索:使用数据窗口可以方便地进行数据检索。
通过设置查询条件、排序方式和数据过滤等属性,可以按照需求从数据库中检索数据,并在数据窗口中显示出来。
4.数据更新:除了展示数据,数据窗口还可以用于数据的更新。
通过设置数据窗口的更新属性,可以实现数据的插入、修改和删除等操作。
同时,PB还提供了事务管理和数据验证等功能,确保数据的完整性和一致性。
5.数据导航:在数据窗口中,可以轻松地实现数据的导航功能。
通过设置数据窗口的导航属性,可以方便地浏览数据,并进行上一条、下一条、第一页和最后一页等操作。
6.数据格式化:PB提供了丰富的数据格式化选项,可以对数据窗口中的数据进行格式化和显示。
例如,可以设置日期格式、货币格式和数值格式等,以便更好地展示和分析数据。
二、数据窗口的高级特性1.动态数据窗口:PB允许动态创建和操作数据窗口。
通过使用动态数据窗口,可以在运行时动态改变数据窗口的结构和属性。
这对于动态查询和灵活的数据展示非常有用。
2.嵌套数据窗口:PB支持嵌套数据窗口的使用。
通过将一个数据窗口嵌套在另一个数据窗口内部,可以实现复杂的数据关联和显示。
例如,可以在父数据窗口中显示子数据窗口的数据。
pb数据窗口设置操作
pb数据窗⼝设置操作1 使DataWindow列只能追加不能修改如何使DataWindow中的数据只能追加新记录⽽不能修改,利⽤ Column 的 Protect 属性可以很⽅便的做到这⼀点,⽅法如下:将每⼀列的 Protect 属性设置为:If( IsRowNew(), 0, 1) )在 PowerScript 中可以动态修改 Protect 属性:dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'")这样,DataWindow 中只有新追加的记录可修改,⽽其他记录是只读的。
2 如何在DataWindow中实现列的⾃动折⾏我们在PowerBuilder应⽤程序的开发过程中, 使⽤DataWindow时, 经常会遇到某列的数据太长, 不能同时全部显⽰的情况. 若采⽤⾃动⽔平滚动, 操作起来⼜不够简便. 下⾯介绍⼀种⽅法, 实现列数据多⾏显⽰, 即实现列数据的⾃动折⾏.具体步骤如下:1) 在DataWindow Painter中打开此DataWindow.2) 在需设定⾃动折⾏的列上双击⿏标, 弹开此列的属性窗⼝.3) 选择Position标签, 选中Autosize Height 多选框.4) 选择Edit标签, 不选中Auto Horz Scroll多选框.5) 单击OK按钮, 保存所做的修改.6) 点中Detail Band (即写有Detail的灰⾊长带), 单击⿏标右键, 选择Properties... 菜单项.7) 选中Autosize Height多选框.8) 单击OK按钮, 保存所做的修改.9) 保存此DataWindow.注意:连在⼀起的汉字(中间没有标点或空格分隔), 系统将认为是⼀个单词, 不会⾃动进⾏折⾏.3 在数据窗⼝中实现动画要实现动画,必须要有定时器,在数据窗⼝中已经有了⼀个定时器,双击数据窗⼝将弹出的对话框,在Timer Interval中定义⼤于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。
PB的数据窗口操作
Composite 复合报表型的.就是可以由几个DW组合成的Crosstab 交叉报表型. 这个很少用.Freeform 自由风格,就是里面的列可以自已改变的. 常用Graph 统计图,你知道的Grid 网格,类似EXCEL的最常用Group 分组的.有分组小计要用的那种常用Label 标签的就是一个大格子一个大格子排列显示的那种N-Up 分栏显示的.这个少用.Tabular 列表的,这个列表不是太好用.这个也少用★SetTransObject语法:dwcontrol.SetTransObject ( transaction )功能:给数据窗口或者datastore控件dwcontrol设置事务对象transaction,缺省事务对象是SQLCA。
返回值:成功设置事务对象则返回1,执行过程中发生了错误则返回-1,有任意参数为Null时返回Null。
★Retrieve语法:dwcontrol.Retrieve ( {, argument, argument . . . } )功能:使用数据窗口控件的当前事务对象检索数据库中的数据。
如果数据窗口控件对应的数据窗口对象定义了检索参数,则应该在该函数中指定检索参数,参数的个数和数据窗口对象的检索变量个数相等,对应的数据类型相兼容。
返回值:返回数据窗口控件主缓存区(PrimaryBuffer)中的记录数,如果检索数据时发生错误则返回-1,如果任意参数为Null则返回Null*该函数的参数和数据窗口对象定义的参数的顺序要相同,类型要兼容。
个数不能少于数据窗口对象定义的参数,即可以等于和多于数据窗口对象定义的参数,多的参数忽略。
★DeleteRow语法:dwcontrol.DeleteRow ( row )功能:删除数据窗口dwcontrol中的第row行数据,如果row为0则表示删除当前行的数据。
返回值:执行成功则返回1,执行错误则返回-1,如果任意参数为Null则返回Null。
PB操作技巧
窗口与控件窗口与控件专题所涉及的范围比较广,如特殊功能控件的实现,友好漂亮界面的制作,这些都是PB程序员比较感兴趣的话题。
在PowerBuilder中,如果善于运用数据窗口与API技术,开发出的应用定将与众不同。
本章结合实例介绍如下专题:制作Splash窗口制作美观的状态条系统热键的实现创建图标栏应用MDI窗口显示背景图片定制有特色的图标按钮导航图界面的制作制作图文并茂的菜单窗口内控件大小与窗口大小同步动态创建控件控件融合技术窗口中控件显示ToolTips第章1PowerBuilder 8.0进阶篇·2·owerBuilder 编程离不开窗口与控件,从某种程度上可以说,现在的可视化编程无非就是将各种控件垒加到窗口中,再加上编写的一些代码,就构成了一个应用程序。
因此可以这么理解:窗口与控件是可视化编程的基础。
PowerBuilder 8.0提供了类型丰富的窗口及控件,灵活使用它们可以为应用开发提供极大的方便。
很多人认为,PowerBuilder 在界面制作方面功能不是很强,很难制作出Delphi 那样的漂亮界面。
其实只要肯思考,善于利用数据窗口及API 等技术,PowerBuilder 一样可以制作出美观、友好的用户界面。
本章将结合实例介绍在PowerBuilder 中如何制作Splash 启动窗口、美观的状态条、图文并茂的菜单以及如何使用系统热键、创建图标栏、用MDI 窗口显示背景图片、定制按钮、制作导航图界面、使窗口内控件大小与窗口大小同步、动态创建控件、使用控件融合、用窗口中控件显示ToolTips 等实用技术。
1.1 制作Splash 窗口现在很多商业软件如PowerBuilder 、Word 、金山词霸等都会在程序启动时呈现一个Splash 窗口,窗口上有软件名称、版本、图标等相关信息或“正在加载,请稍候…”等提示信息,该窗口显示一段时间后会自动关闭。
如果在自己开发的系统中启动时也加上一个Splash 窗口,虽然不会改善程序性能,但会使应用程序添色不少。
PB开发(6)
第六章数据窗口●PB之所以得到广大程序员的青睐,其中最重要的原因之一是它拥有功能强大的数据窗口;●PB程序员所开发的管理信息系统,几乎所有的数据库访问操作都是通过数据窗口来实现;●使用数据窗口对象,可以很方便地实现功能强大的查询统计和打印输出各式各样的报表;●数据窗口技术包括两个部分的内容:数据窗口对象:定义数据源和数据显示格式,完成数据和数据自身特性的定义数据窗口控件:在应用程序中控制和操作数据窗口对象;通过数据窗口对象进而控制和操作数据;●主要内容:数据窗口对象数据窗口画板及其操作设计数据窗口对象数据窗口控件一、 数据窗口对象1.数据窗口基础●数据窗口对象是用来查询、显示和维护来自关系型数据库和其它数据源数据的对象;●数据窗口对象中可以定义数据的显示格式,显示风格和其它数据属性,使数据对用户更加直观,更有意义;●数据窗口对象可以在不同的应用环境中使用;●PB的数据窗口对象在数据窗口画板中定义;2.数据窗口的显示风格●数据窗口显示风格:定义数据窗口的显示风格和外部特征;(1)Grid格式:网格或者普通表格格式●每个数据记录占一行,列标题在所有列的顶端;●在数据窗口设计画板中,不可改变和调换列的位置;●运行时,可以用鼠标拖拽栏目改变数据列的显示宽度,位置;●最常用的一种显示风格,一般的显示数据,操作数据库的界面;(2)Tabular格式:列表格式●与Grid格式很相似,区别在于Tabular格式没有网格线;●在数据窗口设计画板中,可以随意移动,交换列的位置,可以使几个列在同一列标题下,可以增加列标题的内容;●运行时不可以改变列的宽度和位置等;(3)N-UP格式:分栏格式●很多特性都与Tabular格式一样,区别在于N-up格式可以将一页分成若干栏目,在一页中可以并列显示两条或多条记录;●常用于列出较少数据项的清单;(4)Freeform格式:自由格式●通常一屏只能显示一条记录;●每个数据项都应该由一个类似静态文本的提示信息;●默认格式是所有数据项排成一列,标题显示在数据项的左边;●在数据窗口画板中,可以随意安排数据项和标题的位置;●通常用于应用程序的输入界面;(5)Label格式:标签格式●每个标签对应一行记录,每行可以安排几个标签;●定义Label格式的数据窗口时,指定标签的高度,宽度,每行几个标签,标签之间的距离;●常用来打印信封,图书索引卡等各种标签式数据;(6)Group格式:分组格式●风格与Tabular格式类似;●将数据库表中的记录按分组的形式显示,并可按分组完成一些计算;●在数据窗口画板中可以定义多层分组;(7)CrossTab格式:交叉数据格式●有列标题,行标题,行列交叉的单元中是对应于它们的数据;●定义CrossTab数据窗口要分别指定行,列,交叉处的计算数据;(8)Graph格式:图形格式●可以用图形直观表示数据;●定义时,指定轴的数据或字段,指定图形的样式和标题等;(9)Composite格式:复合格式●将几个数据窗口对象组成一个复合的数据窗口;●定义Composite格式的数据窗口不需要选择,指定数据源,而是直接选择已定义好的数据窗口对象;●被复合在一起的数据窗口对象可以是彼此独立的;(10)RichText格式:在文本段落中嵌入数据列的数据窗口●RichText(RTF):带格式控制的文本(11)OLE格式:使数据窗口对象可以与OLE服务器应用程序关联起来,可以通过OLE服务器应用程序完成有关处理等;3.数据窗口的数据源●数据源指定数据窗口中数据的来源;●数据可来自数据库表,或通过文件输入;(1)Quick Select数据源●数据员所对应的SQL Select语句完全是PB自动、快速生成的;●Quick Select数据源中的数据可以来自一个数据库表,或通过外部关键字关联的多个数据库表;●在界面的底部指定数据的排序方式和过滤条件;(2)SQL Select数据源●可以用任意复杂的SQL Select语句构造数据源;●一般当数据源中的数据来自多个表,而这些表又没有通过外部关键字自动关联时,或需分组,需添加计算列时,可以使用SQL Select数据源;●可以在SQL Select画板中生成完整的SQL Select语句;●可以通过SQL语句编辑器直接编写和输入SQL语句;(3)Query数据源●利用在查询画板中事先定义的查询对象作为数据源;●一个查询对象就是事先定义设计和保存的一条SQL Select语句;●查询画板和SQL Select画板很相像;●如果需要反复使用某条SQL Select语句定义数据源,可以将其定义为查询对象;(4)Stored Procedure数据源●是用存储在数据库中的存储过程定义数据源;●存储过程是事先编译好,并存储在数据库中的SQL语句;●要求DBMS支持存储过程,并已经建立;(5)External数据源●外部数据源的数据是来自其他文件或由应用程序生成数据;●并不是所有应用程序中处理的都来自数据库或需长期保存;●为了充分利用PB为数据窗口提供的强大的数据处理能力,可以使用External数据源的数据窗口;4.使用数据窗口的基本步骤●创建一个数据窗口对象;●在窗口画板中,将一个数据窗口控件放在窗口中,并把数据窗口控件和数据窗口对象关联起来;●通过数据窗口控件,应用程序与数据窗口对象进行通信;●通过编写程序,控制数据窗口控件和控件所包含的数据窗口对象;●程序代码可以查询并修改、改变数据的表现形式,处理错误,共享数据窗口控件之间的数据等;二、 数据窗口画板及其操作●数据窗口画板环境●数据窗口对象的设计1.数据窗口画板环境●视窗:Design(设计)、Properties(属性)、Preview(预览)、Column Specification(列说明)、Control List(控件列表)、Data(数据)2.Design视窗●包括若干区域;●Header:显示栏目名,显示报表的标题,其他页眉信息;●Detail:数据窗口主体,用来显示,操作来自数据源的数据;●Summary:通过数据窗口表达式在汇总区对显示在Detail区域中的数据进行汇总、计算;●Footer:显示一些页脚信息,页码;●对于Group风格的数据窗口:●Header Group:用来给出组的标识数据;●Trailer Group:给出分组的汇总信息;3.Preview视窗●设计时,预先浏览数据窗口对象在运行时的效果;●通过该窗口完成对数据库的一些操作:检索,保存,插入,删除等;三、 设计数据窗口对象●选择显示风格,数据源后,PB自动生成一个具有默认属性、特征的数据窗口对象;1.设置数据窗口对象的属性●数据窗口对象的度量单位;●数据窗口对象内部触发器事件的时间间隔;●指定数据窗口的背景色;●定义网格的显示时机和特征;●指定鼠标指针的形状;●设置数据窗口对象的打印属性;在数据窗口的属性设置中,包含了打印行为的设置;运行阶段动态地改变打印设置方式;datawindow.print.properity例:dw_1.Object.Datawindow.Print.Orientation=1 //横向打印方式dw_1.Object.Datawindow.Print.Range=”5-10”dw_1.Object.Datawindow.Print.Preview=”Yes”dw_1.Object.Datawindow.Print.Prompt=”Yes”●设置数据窗口对象的Tab顺序;●修改数据窗口对象的数据源●设置方法:静态(设计阶段)动态(运行阶段)dwcontrol.Object.数据窗口对象属性=属性值dwcontrol.Object.数据窗口对象内的对象.对象的属性=属性值dw_1.Object.Color=255dw_1.Object.dept_t.color=255使用Modify()函数(表示属性的字符串)dwcontrol.Modify(“Datawindow.color=255”)dw_1.Modifydw_1.Modify(“dept_t.color=255”)●有条件地改变字段属性;2.向数据窗口对象添加控件●初始生成的数据窗口包括两类控件:相当于静态文本控件的标签,栏目名;相当于编辑框控件的数据列;●在Control List视窗中可看到这些控件的列表;●插入控件:Insert-Control;●控件:文本,新列,图片,绘图控件,按钮;3.添加计算列和计算域●典型的应用:基于列的计算,数据的辉总统计,系统信息,页码信息等●计算列:直接在SELECT语句定义,用于将数据检索到数据窗口对象,只有重新检索数据库时,计算列的内容才会发生变化;●计算域:数据窗口画板中插入Computed Field;数据窗口上的操作就会引起计算域的变化;四、 数据窗口控件●数据窗口对象定义好之后,要与窗口界面上的数据窗口控件相关联;●用户通过数据窗口控件操作数据窗口对象,进而操作数据库;●数据窗口控件是面向用户的,数据窗口对象是面向数据库的;●数据窗口控件和数据窗口对象是一体的;1.事务对象与数据库连接●在数据窗口能操作数据库之前,必须使用事务对象建立与数据库的连接;●在程序中,对事务对象的连接数据库属性赋值,这样的程序不具有灵活性;●可以把事务对象连接数据库属性的值安排在外部文件中(INI),当需要连接数据库时,从外部文件读入属性值,并对事务对象赋值;●从外部文件读属性值的函数:Profile(file,section,key,default)例:SQLCA.DBMS=Profile (“student.ini”,”database”,”dbms”,”none”)●返回值为读到的属性值,如果没有读到,则返回default;2.为数据窗口指定事务对象●要使数据窗口能访问数据库,则必须将连接到数据库的事务对象指定为事务对象;●方法:dwcontrol.SetTransObject (transaction);●该函数指定数据窗口通过哪个事务对象访问数据库;3.数据窗口控件的操作●用户通过数据窗口控件完成对数据库的查询操作;●介绍用户操作数据窗口时常用到的一些事件和函数(1)检索数据●连接完数据库和设置完事务对象之后,紧接着用Retrieve函数对数据库进行检索,并把结果输出到数据窗口;dwcontrol.Retrieve ({argument,argument…})●函数的返回值:〉=1,成功;0,没有适当值返回;-1,失败;(2)数据窗口常用事件●Clicked事件用户在数据窗口控件的任何位置单击触发Clicked事件,典型应用为:单击选择要操作的数据行或数据项;Clicked事件有如下参数:xpos,ypos,row,dwo●错误处理事件:DBError●数据处理及相关事件:ItemChanged,ItemFocusChanged,RowFocusChanged ●与检索有关的事件:RetrieveStart,RetrieveRow,RetrieveEnd●与更新有关的事件:UpdateStart,UpdateEnd(3)在数据窗口中增加和删除行●dwcontrol.InsertRow (row) row:指定在哪一行插入新行,0为在尾部追加一行;●dwcontrol.DeleteRow (row) row:指定删除哪行,0为删除当前行;(4)更新数据库●用户对数据窗口进行修改,要使这些改变反映到数据库中,则需使用更新函数●dwcontrol.Update ()●返回值:1:成功,-1:失败;(5)数据窗口排序●设置排序方式 dwcontrol.SetSort (format) format:用字符串指定排序条件表达式●排序操作:dwcontrol.Sort ()(6)数据窗口过滤●设置过滤条件:dwcontrol.SetFilter (format)●过滤操作:dwcontrol.Filter ()(7)确定数据窗口当前焦点位置●得到数据窗口中当前行的行号:GerRow ()●得到数据窗口中当前列的列号:GetColumn ()●将指定行设置为数据窗口的当前行:SetRow (row)●将指定列设置为数据窗口的当前列:SetColumn (Columnname)(8)从数据窗口中读取数据●将数据窗口指定行,列位置的数据读到变量中,为了适应不同类型的数据,PB提供了一组函数GetItemDateGetItemDateTimeGetItemTimeGetItemDecimalGetItemNumberGetItemString(row,column)(9)写数据到数据窗口●在应用程序中,可以将数据写到数据窗口的指定行,列位置;●SetItem(row,column,value)(10)数据窗口中打印相关的函数●Print():打印一个数据窗口●PrintDataWindow():将许多数据窗口当成同样一个工作;。
PB数据窗口教程
PB数据窗口教程PowerBuilder是一种流行的集成开发环境,用于快速构建企业级应用程序。
在PowerBuilder中,数据窗口是其中最重要的部分之一、数据窗口提供了一个可视化的界面,用于显示和操作数据库中的数据。
本教程将详细介绍PowerBuilder数据窗口的使用方法。
一、什么是数据窗口数据窗口是PowerBuilder的核心组件之一、它提供了一种直观的方式来显示数据库中的数据,并允许用户进行增删改查等操作。
数据窗口可以与各种类型的数据库进行交互,包括关系型数据库(如Oracle、SQL Server等)和非关系型数据库(如NoSQL数据库等)。
数据窗口具有以下特点:1.可以显示单行或多行数据2.可以进行数据排序和过滤4.可以处理数据库事务5.可以显示图表、嵌入其他控件等二、数据窗口的基本操作要创建一个数据窗口,首先需要打开PowerBuilder开发环境并创建一个新的PowerBuilder项目。
然后,右键单击项目资源树中的“数据窗口”节点,并选择“新建数据窗口”。
在数据窗口设计器中,可以通过添加列、设置数据源、定义布局等来定义数据窗口的外观和功能。
可以使用“数据窗口”菜单上的各种选项来完成这些操作。
接下来,可以将数据窗口添加到应用程序的窗口中。
在窗口设计器中,可以从工具箱中拖动数据窗口控件到窗口中,并调整位置和大小。
三、使用数据窗口实现增删改查操作PowerBuilder的数据窗口提供了一套强大的功能来实现数据的增删改查操作。
下面是一些常用的操作方法:1.查询数据:在数据窗口设计器中,可以设置数据窗口的数据源,包括选择数据库表、指定查询条件等。
在运行时,数据窗口将自动执行查询操作,并将结果显示在界面上。
2.添加数据:可以使用数据窗口的插入按钮或右键菜单来添加新的数据行。
在添加数据时,可以直接在数据窗口中输入数据,或者通过调用数据窗口的弹出窗口来输入数据。
4.删除数据:可以使用数据窗口的删除按钮或右键菜单来删除选中的数据行。
PB窗口使用技巧之使用窗口属性编程
PB窗口使用技巧之使用窗口属性编程本文再详细介绍几个在编程中经常用到的窗口属性,主要有control[],menuID,WindowState和tag等。
属性tag可以应用于所有的控件、用户对象与菜单,用来保存和控件相关的文本。
因为文本可以随意设置,所以可以根据脚本的目的来设置各个控件的tag内容。
比如,需要显示各个控件的提示信息时,可以给每个控件的tag属性赋予描述控件功能的文本或者使用注意事项的文本;如果需要知道控件的类别,可以给每个控件赋予描述控件所属类别的文字(当然还有其他的方法)。
例如,下面的脚本可以显示frame的帮助信息:w_frame.SetMicroHelp(This.Tag)例如,下面的脚本可以根据tag的取值对各个控件进行初始化:Int li_index,li_totalDataWindow ldw_tempDropDownListbox lddlb_tempRadioButton lrb_templi_total = Upperbound(Parent.Control[])For li_index = 1 To li_totalChoose Case Lower(Parent.Control[li_index].Tag)Case 'DataWindow'ldw_temp = Parent.Control[li_index]ldw_temp.Reset()Case 'DropDownListbox'lddlb_temp = Parent.Control[li_index]lddlb_temp.SelectItem(0)Case 'radiobutton'lrb_temp = Parent.Control[li_index]lrb_temp.Checked = FalseCase Else…End ChooseNext上面的脚本中用到了窗口的Control属性。
PB控件
PB控件空白的窗口是没什么用的,用户在使用应用程序的时候打交道最多的就是窗口中的控件,接下来就介绍如何创建和使用控件。
单击POWERBAR工具条上的WINDOW按钮,在SELECT WINDOW对话框中选择系统自动创建的W-GENAPP-ABOUT窗口,然后单击OK按钮,选中的窗口就显示在窗口画板中(图6-6),这个窗口中有两个控件,上面的控件是一个静态文本框,这种控件的作用是在窗口中显示一些说明和提示信息。
控件上的文本可以利用脚本实现在程序运行时根据需要动态变化。
下面的控件是一个命令按钮,鼠标右击这个命令按钮,在弹出的菜单中选中SCRIPT菜单项,在弹出的窗口中可以看到系统已经为命令按钮的CLICK事件编写了脚本,脚本的作用是关闭命令按钮所在的窗口。
在大多数情况下我们需要处理的都是命令按钮的CLICK事件。
图6-6单击POWERBAR工具条上的WINDOW按钮,这次选择打开W-GENAPP-TOOLBARS窗口,可以看出这个窗口中也有两个命令按钮控件,窗口的左边是一个大的方框,称为GROUPBOX 控件,它是一个容器,放入容器中的控件就成为一组相关的控件,比如这里放在组合框控件中的是五个单选按钮控件,这五个单选按钮放在一个组合框中就表示它们只能选中其中的一个。
组合框一般就是用来放入一组相关的控件。
上面通过对系统利用应用模板创建的窗口中的控件的介绍,说明了静态文本框,命令按钮,组合框,单选按钮四个控件,接下来我们通过在刚创建的MYWINDOW窗口中放入控件来说明其它控件的概念和用途。
单击POWERBAR工具条上的WINDOW按钮,在打开的对话框中选择MYWINDOW窗口,然后单击OK打开它。
注意PAINTERBAR工具条上的工具条画板按钮,它是一个下拉按钮,单击按钮上的下拉箭头,屏幕上弹出的就是所有可用控件(图6-7),这里将只介绍常用的控件。
图6-7注意弹出方框中的PICTUREBUTTON控件,它与命令按钮在程序中的功能类似,唯一的区别是在这个控件上可以设置图片,我们选中这个控件,然后单击窗口中的某个地方,这个控件就放在了窗口中,鼠标右键单击这个控件,选中弹出菜单的PROPERTIES菜单项,弹出的对话框中很重要的两项ENABLED FILE NAME 和DISABLED FILE NAME就是用来设置PICTUREBUTTON控件在有效和无效时的图片,这里不妨单击BROWSE ENABLED按钮为ENABLED FILE NAME一栏选择一个图片,选好后单击OK按钮,可以发现选中的图片就显示在了控件上。
第6章窗口
3. 上图右边部分设置窗口属性。左边部分底部的第一 个标签Layout用来设计窗口的格局,如在窗口中添加 按钮、文字等;第二个标签open用来给窗口及窗口中 的控件编写脚本;第五个标签Declare Instance Variables用来定义非局部变量。 4. 窗口属性、控件、脚本设置完毕(也可以部分设置) 后,点击菜单【File|Save】,在Windows文本框输入 新建窗口的名称(窗口名按规则用w_打头),在 Comments文本框输入窗口的注释,输入完毕后点击 【OK】按钮即可完成。
Popup(弹出式窗口)
一个窗口打开,打开它的窗口称为它的父窗口,它可 以覆盖父窗口,也可以移出父窗口,但不能被父窗口 覆盖,它总是显示在父窗口的前面。
弹出式窗体在打开后,焦点自动指向弹出窗体并 在弹出窗口上执行相应的操作;只有将弹出窗口关闭 后,其祖先窗口才可能重新获得焦点。 弹出式窗口可以被最大化、最小化,也可以拥有 自己的菜单,当弹出式窗口被最小化时,它以图标形 式显示在屏幕底部,而不是在父窗口中;当弹出式窗 口最大化时,最大化到整个屏幕,而不仅仅覆盖父窗 口部分;当父窗口最小化时,弹出式窗口随其隐藏, 当父窗口被关闭时,弹出式窗口也随之关闭。
6.3 设置窗口属性
窗口属性定义窗口的外观、行为和状态,即窗 口的变现风格。窗口属性不同,呈现给用户的界面 就有所区别,可以根据需要来设置窗口的属性。 打开要设置属性的窗口,在窗口的任意空白处 点击右键,选择Properties,或选择菜单 【View|Properties】,就打开了窗口的属性窗口。 窗口属性共有4页:General、Scroll、 Toolbar、Other。
9.MaxBox:在选择Control Menu的同时再选择 该项,则在窗口的右上角显示最大化按钮,点 击最大化按钮,窗口变为最大化状态同时最大 化按钮变为还原按钮,点击还原按钮回到窗口 的初始状态。 10.MinBox:在选择Control Menu的同时再选择 该项,则在窗口的右上角显示最小化按钮,点 击最小化按钮,窗口在屏幕底部缩为一个图标, 点击图标回到窗口的初始状态。 11.Border:指定窗口周围是否要加边框,只有 子窗口、弹出式窗口可以不加边框,其它窗口 系统自动加上边框,并且用户不能将边框去除。
pb中窗口的打开和关闭
pb中窗口的打开和关闭pb中窗口的打开和关闭Close()功能关闭窗口并释放窗口以及窗口上的控件所占据的内存。
语法Close(windowname)参数windowname:要关闭窗口的名称返回值Integer。
函数执行成功时返回1,发生错误时返回-1。
如果参数windowname的值为NULL,Close()函数返回NULL。
用法应用程序使用Open()或其它Open簇函数打开窗口后,不需要窗口时,可以使用Close()关闭窗口并释放窗口以及窗口上所有控件占据的内存。
Close()函数的执行过程为:如果要关闭窗口的CloseQuery和/或Close事件已经编写了事件处理程序,那么执行这些事件处理程序,从屏幕上删除要关闭的窗口、关闭窗口、之后执行调用Close()函数语句后面的语句。
当窗口被关闭后,应用程序就不能再访问已经关闭窗口的属性、实例变量、对象函数、以及窗口上的控件了。
如果关闭窗口后应用程序依然访问上述特性,那么将引发运行错误。
当然,应用程序也可以阻止窗口被关闭,方法很简单,只要在欲阻止关闭窗口的CloseQuery事件处理程序中使用RETURN语句返回1即可,格式为:RETURN1 CloseWithReturn()功能关闭窗口并将返回值保存在Message对象中,该函数只能对响应窗口使用。
语法CloseWithReturn(windowname,returnvalue)参数windowname:要关闭窗口的名称returnvalue:指定关闭窗口时保存到Message对象中的值,调用CloseWithReturn()函数的代码段通过查看Message对象属性的值得到关闭窗口时被关闭窗口传递的值。
returnvalue参数必须是下述三种类型之一:String、Numeric、PowerObject返回值Integer。
函数执行成功时返回1,发生错误时返回-1。
如果参数任何的值为NULL,CloseWithReturn()函数返回NULL。
PB数据窗口及事件
Pb数据窗口1、Pb数据窗口介绍(结合实例进行讲解):数据窗口控件对应到数据窗口对象显示数据。
数据窗口对象分为:常用的数据窗口类型:Composite 复合报表数据窗口Crosstab 交叉报表数据窗口Freeform 自由模式数据窗口Graph 图形报表数据窗口Grid 网格数据窗口Group 分组数据窗口n-up 多列显示数据窗口分别举例说明各个数据窗口:杏林妙手中的体检报告中保护上述数据窗口类型。
2、数据窗口数据源类型介绍:Quick select、sql select、query、external、stored procedure 分别为:通过单表查询,通过多表查询,通过查询对象,通过自定义的字段,通过存储过程。
3、数据窗口控件常用函数介绍:Setredraw(boolean):设置是否自动刷新报表,true 自动刷新,false不自动刷新。
Describe(string):获取数据窗口指定对象的属性,string为数据窗口表达式。
例如:“t_1.text”等。
Modify(string):设置数据窗口指定对象的属性,和describe配合使用,string为数据窗口表达式。
例如“t_1.text=‟123‟”描述查找相关设置的方法。
Getitemstring(int,string)、Getitemstring(int,int):获取数据窗口指定行的字符串列的值,参数:行号,列名(或列值)。
Setitem (int,string,string)、Setitemstring(int,int,string):设置数据窗口指定行的字符串列的值,参数:行号,列名(或列值),设置值。
(还有获取其他数据类型的类似函数不做赘述!,还可以通过object.列名[行号] 来获取和设置指定行列的值)Deleterow(int):删除行指定行的操作,和循环配合使用的注意事项。
Insertrow(0):插入行,参数0表示在最后一行插入Rowcount():当前数据窗口的行数。
PB(6)
PB(6)第六章菜单●菜单是用户操作应用程序的主要界面,它由一系列命令组成选项(菜单项构成);●用户通过选择菜单项发出命令,指示应用程序完成用户期待的任务;●菜单是一种独立的对象;●PB中,用Menu画板来建立,修改菜单,然后粘贴到相应的窗口上;●制作菜单的操作很简单,可以很容易掌握;●主要内容:菜单概述创建与修改菜单设置菜单属性菜单事件及编程使用继承建立菜单使用菜单多文档界面(MDI)一、菜单概述1.关于菜单和菜单对象●菜单中的每个选项定义为一个菜单对象;●菜单对象显示在菜单条,下拉式菜单或者级联菜单中;●下拉式菜单是菜单条的菜单对象下面的菜单;●级联式菜单是下拉式菜单的菜单对象旁边的菜单;2.使用菜单●有两种方式使用在PB中建立的菜单;●在窗口中的菜单条中使用,窗口菜单与窗口相关联,只要在窗口打开,窗口菜单就显示出来;●作为弹出式菜单(快捷菜单)使用,只有当脚本执行PopMenu 函数时,弹出式菜单才显示出来;3.设计菜单●利用PB可以完全自由地进行设计菜单;●但是为了让应用程序使用起来更简单,应遵循操作环境的一些规定;●例如:根据约定,菜单对象后面的省略号(…)表示单击该菜单对象会显示一个对话框;●把相关的菜单对象组合在一个下拉式菜单中;●较少使用级联菜单并且只级联一级;4.建立菜单●通过设置菜单对象的属性来指定其外观和行为;●编写脚本以决定如何对菜单中的事件进行响应,可以为菜单声明函数,结构和变量来支持脚本;●建立菜单的方式有两种:从头开始建立一个新菜单;继承已有的菜单的风格,函数,结构,变量和脚本建立菜单;二、建立新菜单1.打开Menu 画板2.Menu 画板的组成●WYSIWYG视窗:设计时看到的菜单和运行时的菜单是一样的;●Tree Menu 视窗:树状菜单;●代码视窗:●属性视窗:●菜单工具条:3.在Menu 画板中,可以指定下面各项:●在菜单条中显示的若干菜单对象;●在菜单条每个菜单对象下面显示的若干菜单对象;●菜单对象的属性;●加速键和快捷键;●菜单对象的脚本;4.建立菜单●在菜单项编辑区,选定要创建下拉菜单的项,单击鼠标右键,弹出快捷菜单;●Insert Menu Item:插入同级菜单●Insert Menu Item At End:在本级末尾插入菜单项●Insert Submenu Item:插入下一级菜单5.修改菜单●插入同级新菜单项;●删除当前菜单项;●插入分隔线:“-”,分隔线把相同的菜单项分开,使菜单更加易于用户使用;●移动菜单项;●复制菜单项;●为菜单改名字;●为菜单项设置加速键:在菜单项名称(一个指定的字母)的前面加上“&”符号;三、控件属性的设置1.定义菜单项的快捷键●快捷键只能在菜单画笔中定义,而不能在程序中利用代码进行改变;●使用“Shortcut”标签;●在同一个菜单中,作为快捷键使用的组合键应当唯一;2.设置菜单对象的一般属性●Name:菜单项名称;●Lock Name:指定菜单项名称能否被修改;●Text:菜单项在菜单中显示的内容;●Microhelp:帮助信息,鼠标移到该项上时,所显示的提示信息;●Tag:菜单的说明信息;●Visible:菜单是否可见;●Enabled:菜单是否有效的;●Checked:菜单是否显示选中符号;3.设置菜单的工具栏●设计创建工具栏,这样用户直接点击图标按钮就可以方便的完成相应的功能;●使用“T oolbar”标签;●最简单的设置菜单的工具栏,只需填写“T oolbarItemName”属性即可;四、菜单事件及编程●菜单是要与菜单事件和函数结合,才能发挥作用;1.菜单事件●Clicked事件由以下几种操作触发鼠标单级菜单项;使用加速键调出菜单;使用快捷键调处菜单;●Help事件由以下几种操作触发在菜单操作中按下键盘的[F1]键;点击标题栏上的“问号”;●Selected事件;菜单的某项被选中但没有做任何操作,菜单项被高亮显示时触发该事件;该事件最常用的是在脚本中利用ParentWindow.SetMicroHelp()方法显示该菜单项的MicroHelp文本;2.菜单的函数●Disable:菜单失效,不能被用户选,同时Enabled属性设置为False;●Enable:菜单有效,同时Enabled属性设置为True;●Checked:菜单的Checked属性设置为True,在菜单项的旁边显示选中的符号;●UnChecked:菜单的Checked属性设置为False,在去掉选中符号;●Hide:隐藏菜单项;●Show:使隐藏的菜单项显示出来;●PopMenu:显示快捷菜单;●为了更好的使用菜单,可以定义自己的菜单级函数;3.引用应用程序中的对象●引用窗口只需简单地使用窗口的名字,w_cust.WindowState=Minimized!;可以使用保留字ParentWindow来引用运行过程中与菜单相关联的窗口,Close(ParentWindow)●引用窗口中的控件和用户对象;window.control.attribute/doc/d819090842.html,erobject.attrib ute例:w_cust.cb_print.Enabled=TRUE●引用菜单对象;menu.menuobjectmenu.menuobject.attribute当引用下拉式菜单或级联式菜单中的菜单对象时,必须指定每个菜单对象到正在引用的菜单对象的路径;例如:m_menu.m_text.m_bold.check()五、使用继承建立菜单●当使用继承建立菜单时,祖先菜单中的所有东西都被他的后代继承;●可以在后代菜单中作以下事情:在菜单最后添加菜单对象;在菜单中插入菜单对象;修改已有的菜单对象;为在祖先菜单中没有脚本的菜单对象建立脚本;扩展或取代继承来的脚本;为菜单声明变量,函数和结构●在后代菜单中不可以作以下事情:改变继承来的菜单对象的顺序;删除继承来的菜单对象;六、使用菜单●给窗口添加菜单条在窗口画板中,把菜单条和窗口关联起来;在窗口的属性窗口中,在Menu Name文本框中输入要关联的菜单;在窗口的脚本中标识菜单对象:menu.菜单对象在运行过程中改变窗口的菜单:在脚本中使用ChangeMenu函数●弹出窗口上的菜单当用户单击某对象或某控件时,把窗口上某菜单标题下的下拉菜单作为弹出式菜单显示;只需在某对象或某控件的RbuttonDown事件中写下代码例:m_main.m_title.PopMenu(PointerX(),PointerY())七、多文档界面(MDI)●MDI是一种特殊风格的窗口,在一个MDI窗口中可以打开多个工作窗口●用户可以在一个环境下打开多个窗口,可以完成多个任务;1.MDI窗口的构成●菜单●工具栏●MDI框架●客户区域●工作窗口●状态栏2.创建一个完整的MDI界面的步骤●建立MDI框架窗口创建一个新窗口;“Window Tyep”:MDI Frame with MicroHelp;将各个工作表公用的菜单连接到该窗口上;一般情况下,框架窗口上不放置任何控件,而是把所需控件放置到工作表上;●创建工作表创建普通窗口;指定窗口类型:确保不是“MDI”,“Response”类型;打开工作表的方法:使用OpenSheet()函数例:OpenSheet(w_person,ParentWindow)OpenSheet (w_person,w_parent,5,Original!)●建立MDI应用程序中的菜单;●设置微帮助微帮助是显示在MDI框架窗口底部状态栏上的上下文相关的文字;微帮助与菜单联系后,当用户选择菜单项时,系统会显示当前菜单的帮助信息;为菜单项定义为帮助的方法是:在菜单项的“MicroHelp”属性中输入该菜单项的帮助信息;如果要为菜单之外的对象定义为帮助:选择某个控件,在它的Tag属性中输入该控件的帮助信息;在该控件的GetFocus事件中键入代码:w_frame.SetMicroHelp (This.tag)●设置工具栏MDI风格的应用程序,可以使用工具栏;菜单中定义的工具栏只对MDI框架窗口何工作表有效,对其他类型窗口来说,菜单定义的工具栏无效;工具栏上的图标按钮直接对应于菜单中的某个菜单项;用户能够控制工具栏的显示特性;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章窗口与控件窗口是应用程序与用户交流的主要界面。
用它可以显示系统的有关信息,响应用户的鼠标和键盘输入等等。
在这一节中我们将利用PowerBuilder的应用模板功能来创建一个应用程序,利用这个程序来介绍窗口的有关概念和操作。
首先我们利用系统的应用模板功能创建一个应用程序:单击FILE菜单的NEW菜单项,系统弹出SELECT NEW APPLICATION LIBRARY对话框,用来选择一个对象库,这里在D:\DATABASE目录下创建一个新的名为SAMPLE的对象库,然后单击“保存”按钮,在接下来的SAVE APPLICATION对话框中给新的应用对象同样起名为SAMPLE,然后单击OK 按钮确定,系统弹出对话框询问是否需要创建应用模板,这里选择“是”,接着系统就开始为我们生成一个多文档接口的应用程序,APPLICATION画板中显示的就是系统自动帮我们创建好的一些对象(图6-1)。
从对象的图标可以看出这些对象都是窗口和菜单,接下来就以这里的窗口对象为例介绍窗口的有关概念和操作。
图6-16.1 窗口的类型6.2 窗口的常用操作6.3 控件6.1 窗口的类型PowerBuilder提供了六种不同类型的窗口,它们的用途各不相同,下面分别说明:第一种要介绍的是MAIN类型的窗口,它的特点是可以不依赖于任何其它的窗口,可以独立地存在,一个应用程序中可以有多个MAIN窗口,你可以在需要的时候在程序中用OPEN函数打开其中的任意一个。
此外在MAIN窗口中可以放置需要的各种控件。
单击POWERBAR 工具条上的WINDOW按钮,选中W-GENAPP-SHEET窗口后单击OK按钮确定所做的操作,然后在WINDOW画板中的窗口对象上单击鼠标右键,选中弹出的菜单的PROPERTIES菜单项,在弹出的WINDOW对话框中注意WINDOW TYPE一栏,可以发现W-GENAPP-SHEET窗口就是MAIN类型的,在其中就可以放入各种控件。
第二种类型的窗口是POPUP类型,它的特点是通常都是从其它窗口的脚本中利用OPEN函数打开它,打开后这种类型的窗口自动成为含有打开脚本的窗口的子窗口。
POPUP类型的窗口可以显示在父窗口的外面,但不能被父窗口覆盖,当父窗口最小化或者关闭的时候,它也相应地最小化或者关闭。
第三种类型的窗口是CHILD类型,它的特点是通常都是从主窗口或者弹出式窗口的脚本中,利用OPEN函数打开它,它可以在父窗口中移动,但不能移出主窗口的工作区,而且当父窗口移动的时候,CHILD窗口也跟着移动。
第四种类型的窗口是RESPONSE类型,它是一种模式窗口,也就是说,当这种类型的窗口被打开之后,输入焦点就切换到这个窗口上,用户只有在对这个窗口进行操作并关闭这个窗口之后才可以使用程序中的其它窗口。
在刚才的SAMPLE应用程序中,W-GENAPP-ABOUT和W-GENAPP-TOOLBARS窗口就是RESPONSE类型的窗口。
第五种类型的窗口是MDI FRAME类型,它的特点是在这种类型的窗口中一般不放入控件,而是把这种类型的窗口作为其它类型的窗口的容器,利用这种类型的窗口就可以实现多文档的界面,在容器中的每一个窗口用来显示一个文档。
在我们这个程序中的W-GENAPP-FRAME 窗口就是一个MDI FRAME类型的窗口。
单击POWERBAR工具条上的RUN按钮运行应用程序,在运行的应用程序中单击工具条上的NEW按钮,然后选择WINDOW菜单上的TITLE VERTICAL 菜单项,可以看出主窗口的工作区中显示有几个窗口,这些窗口可以用来显示不同的文档(图6-2)图6-2第六种类型的窗口是MDI FRAME WITH MICROHELP,这种类型的窗口与上一种基本一样,唯一的区别在与这种窗口在工作区的下面带有一个状态条,利用这个状态条可以显示一些操作提示信息。
事实上刚才的窗口W-GENAPP-FRAME就是这种类型的。
6.2 窗口的常用操作接下来要介绍的是对窗口的一些基本属性的设置和修改操作。
单击POWERBAR工具条上的WINDOW按钮,在弹出的SELECT WINDOW对话框中选择NEW按钮,我们开始创建一个新的窗口并设置它的一些属性。
在新窗口上单击鼠标右键,选择弹出菜单的PROPERTIES菜单项,系统弹出WINDOW对话框用来设置窗口的各种属性(图6-3)。
图6-3首先看TITLE一栏,其中的内容被用作窗口的标题,系统已经设置了一个缺省的标题UNTITLED,这里把它修改为“THIS IS TITLE”,MENU NAME一栏用来输入窗口的菜单的名字,你可以通过单击BROWSE按钮来搜索一个已经存在的菜单对象作为这个窗口的菜单,一个窗口并不要求一定要有菜单。
这里的范例中选择M-GENAPP-FRAME。
接下来的TAG属性是一个字符串,这个字符串在一些需要的地方可能会被使用,比如在适当的时候把它显示在窗口的状态栏上作为提示帮助信息,这里就不输入了。
接着的若干个复选框分别用来设置窗口是否可见,有效,是否有控制菜单,最大、最小化按钮,是否可改变大小等等,其中灰色的复选框表示对这种类型的窗口是不可用的。
接下来的WINDOW TYPE用来选择窗口的类型,也就是刚才介绍的六种窗口中的一种。
WINDOW COLOR栏则是用来设置窗口的工作区的颜色。
最后的MDI CLIENT COLOR是用来设置多文档窗口的工作区的颜色,由于现在是MAIN类型的窗口,这一栏目前不可用。
接下来单击对话框中的POSITION标签,利用这个标签可以设置窗口的大小,在屏幕上的位置和初始显示状态,因为这几个选项都很容易理解,这里就不一一介绍了。
单击POINTER标签,这个标签的作用是用来设置显示在窗口中的鼠标的形状,系统列出了已有的若干中鼠标形状供我们选择使用,当然你也可以创建一个新的形状的鼠标,然后通过单击BROWSE按钮把它选为窗口鼠标,ICON标签用来设置窗口的图标,也就是窗口最小化时的代表窗口的图标,在窗口的左上角也有这个图标。
同样地我们可以选择一个系统的或者自己创建的图标。
自己创建的图标要求是16*16的,否则会显示不出来。
SCROLL标签用来用来设置窗口的滚动特性,在这里可以设定窗口是否具有滚动条,对话框上的四个编辑栏用来设置滚动条滚动的特性和幅度,也就是单击滚动条上的箭头或者其它地方的时候窗口每次滚动多大的距离。
左边的两个编辑栏用来设置水平滚动条的特性,UNITS PER LINE的值为0表示单击滚动条上的箭头时滚动窗口宽度的百分之一。
而COLUMNS PER PAGE值为0表示单击滚动条上的空白区域时每次滚动10列。
一般情况下我们不对窗口的这些缺省值进行修改。
TOOLBAR标签用来设置的工具条特性,这里可以设置工具条是否可见,工具条在窗口中的位置,要注意的是对于浮动方式的工具条,需要定义它的浮动特性,只有对有工具条的窗口才需要定义工具条的特性(图6-4)。
图6-4定义好了窗口的基本属性,当然很希望能马上了解窗口运行时的样子,单击PAINTERBAR 工具条上的PREVIEW按钮,就可以预览窗口的样子(图6-5),可以看出窗口的标题就是我们刚才定义的标题,窗口的菜单也是刚才选中的菜单,窗口的其它特性也是我们刚才所设置的。
关闭预览窗口,单击FILE菜单的SAVE菜单项,系统要求我们保存刚才创建的窗口,在SAVE WINDOW对话框中给窗口起名为MYWINDOW,然后单击OK按钮。
单击POWERBAR工具条上的RUN WINDOW按钮,系统弹出SELECT WINDOW对话框,在这个对话框中列出了当前所有的窗口对象,选择我们刚才创建的MYWINDOW窗口对象,然后单击START按钮,就可以实际运行这个窗口,从而了解窗口的动态特性。
图6-56.3 控件空白的窗口是没什么用的,用户在使用应用程序的时候打交道最多的就是窗口中的控件,接下来就介绍如何创建和使用控件。
单击POWERBAR工具条上的WINDOW按钮,在SELECT WINDOW对话框中选择系统自动创建的W-GENAPP-ABOUT窗口,然后单击OK按钮,选中的窗口就显示在窗口画板中(图6-6),这个窗口中有两个控件,上面的控件是一个静态文本框,这种控件的作用是在窗口中显示一些说明和提示信息。
控件上的文本可以利用脚本实现在程序运行时根据需要动态变化。
下面的控件是一个命令按钮,鼠标右击这个命令按钮,在弹出的菜单中选中SCRIPT菜单项,在弹出的窗口中可以看到系统已经为命令按钮的CLICK事件编写了脚本,脚本的作用是关闭命令按钮所在的窗口。
在大多数情况下我们需要处理的都是命令按钮的CLICK事件。
图6-6单击POWERBAR工具条上的WINDOW按钮,这次选择打开W-GENAPP-TOOLBARS窗口,可以看出这个窗口中也有两个命令按钮控件,窗口的左边是一个大的方框,称为GROUPBOX 控件,它是一个容器,放入容器中的控件就成为一组相关的控件,比如这里放在组合框控件中的是五个单选按钮控件,这五个单选按钮放在一个组合框中就表示它们只能选中其中的一个。
组合框一般就是用来放入一组相关的控件。
上面通过对系统利用应用模板创建的窗口中的控件的介绍,说明了静态文本框,命令按钮,组合框,单选按钮四个控件,接下来我们通过在刚创建的MYWINDOW窗口中放入控件来说明其它控件的概念和用途。
单击POWERBAR工具条上的WINDOW按钮,在打开的对话框中选择MYWINDOW窗口,然后单击OK打开它。
注意PAINTERBAR工具条上的工具条画板按钮,它是一个下拉按钮,单击按钮上的下拉箭头,屏幕上弹出的就是所有可用控件(图6-7),这里将只介绍常用的控件。
图6-7注意弹出方框中的PICTUREBUTTON控件,它与命令按钮在程序中的功能类似,唯一的区别是在这个控件上可以设置图片,我们选中这个控件,然后单击窗口中的某个地方,这个控件就放在了窗口中,鼠标右键单击这个控件,选中弹出菜单的PROPERTIES菜单项,弹出的对话框中很重要的两项ENABLED FILE NAME 和DISABLED FILE NAME就是用来设置PICTUREBUTTON控件在有效和无效时的图片,这里不妨单击BROWSE ENABLED按钮为ENABLED FILE NAME一栏选择一个图片(读者可自行选择一张后缀为.BMP的图片文件),选好后,点击TEXT 框,将里面的NONE文字删除,然后单击OK按钮,可以发现选中的图片就显示在了控件上。
再看弹出控件框中的CHECKBOX控件,这个控件的作用是用来表示开关状态或者三种状态中的一种,在窗口中放置一个CHECKBOX控件,然后用和前面类似的方法修改控件的属性,选中THREE STATE复选框,然后单击OK按钮,单击PAINTERBAR工具条上的SAVE按钮保存修改,然后选择MYWINDOW窗口运行它,单击窗口上的复选框,可以发现它有三种状态(黑色选中,灰色选中,未选中),我们可以利用这三种状态来设置和表示应用程序中的某个变量或者对象的当前状态。