PB事件和自定义事件

合集下载

如何在PB中同时“继承”多个用户自定义数据窗口对象

如何在PB中同时“继承”多个用户自定义数据窗口对象

如何在PB中同时“继承”多个用户自定义数据窗口对象1. 基本功能对象: 具有单一功能的,独立的,用户自定义的对象.---- 2. 中间层对象: 把自己捕获到的事件以某种方式传递给基本功能对象实例变量, 以完成对基本功能对象相应的事件脚本的调用. 被继承, 但不继承任何其它对象.---- 另做一个用户自定义数据窗口对象,它不继承任何对象, 称之为中间层对象, 在中间层对象中为每个需要用到的基本功能对象声明一个实例对象变量, 在中间层对象的事件中去调用实例对象相应的事件. 使用时继承中间层对象, 以完成对基本对象的选择与调用.(见图一)---- 实现举例:---- 1. 基本功能对象制作:---- 新建二个数据窗口用户对象, 分别命名为: Uo_DwA, Uo_DwB . 在Uo_DwA 的Clicked 事件中写一行脚本:---- MessageBox ( ' Uo_DwA ' , ' Uo_DwA 的单击事件')---- 在Uo_DwB 的Clicked 事件中写一行脚本:---- MessageBox ( ' Uo_DwB ' , ' Uo_DwB 的单击事件')---- 2. 中间层对象制作:---- 2.1新建一个数据窗口用户对象, 命名为Uo_DwInterlayer .---- 2.2为中间层对象声明二个实例变量:---- GraphicObject Igo_BaseDwObject[] //每一个元素是一个基本对象的实例引用Integer Ii_BaseDwObjectNumber //保存元素的个数.---- 2.3. 加一个用来注册的对象函数, 用来注册基本功能对象. Uf_Register (GraphicObject a_obj[] , DataWindow adw_object)---- 函数内容:Long Ll_CirculaterIi_BaseDwObjectNumber = UpperBound (A_Obj[])FOR Ll_Circulater = 1 TO ii_basedwobjectnumberIgo_BaseDwObject[Ll_Circulater] =A_Obj[Ll_Circulater]// 下行脚本用来注册基本功能对象中的实例变量Idw_THIS (说明见下文)//Igo_BaseDwObject[Ll_Circulater].FunctionDynamic Uf_RegisterDwo ( Adw_Object)END FORReturn---- 2.4为中间层对象中加入每个基本功能对象拥有用户自定义事件, 在中间层对象的每个事件中加入如下脚本(事件Clicked):Long Ll_Circulater//调用被注册过的每个基本功能对象的相同的事件脚本FOR Ll_Circulater = 1 TO Ii_BaseDwObjectNumber//如果当前事件为EditChanged , 则把下行脚本中的Clicked(xpos , ypos , row , dwo) 部分替换为EditChanged(row,dwo,data)Igo_BaseDwObject [Ll_Circulater].EventDynamic Trigger Clicked (xpos , ypos , row , dwo)END FORReturn---- 3. 新建一个窗口, 命名为W_TestInterlayer . 在窗口中放置中间层对象: Uo_DwInterlayer . 默认控件名: Dw_1. 然后在控件Dw_1的Constructor 事件中对需要引用的基本功能对象进行注册, 即可实现引用基本功能对象的目的. 基本功能对象可以是任意个. 在Dw_1 的Constructor 事件中加入如下脚本://注册基础数据窗口对象GraphicObject Lgo_BaseDwObject []//声明一个可变长度的一维对象数组//建立对象数组元素的实例, 以便对Uo_DwA进行引用Lgo_BaseDwObject[1] = Create Uo_DwA//建立对象数组元素的实例, 以便对Uo_DwB进行引用Lgo_BaseDwObject[2] = Create Uo_DwB ////用中间层函数注册对象数组和本数据窗口对象.Uf_Register ( Lgo_BaseDwObject[] ,THIS)Return---- 4. 运行窗口W_TestInterlayer , 单击DW_1 , 会依次弹出2个消息框.---- 在实际应用中, 由于基本功能对象是被引用的而非继承, 所以基本功能对象脚本中的代词THIS为空, 为此:---- 需要在基本功能对象中声明一个实例变量: DataWindow Idw_THIS .---- 加一个注册函数用来为实例变量Idw_THIS 赋值. 函数名称Uf_RegisterDwo (DataWindow , Adw_THIS) . 函数内容:Idw_THIS = Adw_THISReturn---- 对象中所有对数据窗口操作的函数前都必须加上“Idw_THIS.”, 进行完全路径的引用. ---- 因为这些基本功能对象被继承过,为了向前兼容, 所以要在它们的Constructor 事件中写入如下脚本:IF Not IsValid (Idw_This) THENIdw_This = THISEND IFRetrun---- 以便对实例变量Idw_THIS 自动赋值.。

PB8简明开发指南

PB8简明开发指南
二、PowerBuilder 8.0设计基础
(一)PB8中的关键概念
1.对象(Object)、属性(Property)、事件(Event)
在所有面向对象的编程工具中,对象都是一个最基本的概念。 PB8中提供了诸如窗口、命令按钮、数据窗口等图形对象 以及数据仓库、错误等非可视对象。对象通过属性对其特征进行描述和区分。例如,一个窗口对象,其属性包括窗口 名、菜单名、是否可见、背景色、宽度、高度、在屏幕中所处的位置等。而用户对对象的操作则是通过对对象进行诸如 点击、双击、拖动等动作来实现的,在动作发生时,“事件”即被触发。
2.窗口(Window)和控件(Control)
窗口是应用中所有可视对象的载体,也是应用与用户直接交互的直观途径。PB8中提供了丰富的控件,你可以在窗口画板 工具栏的控件箱中找到它们。总的来说有五种类型的控件:
(1)激活动作控件:包括Commandbutton(命令按钮)、PictureButton(图像按钮)和PictureHyperLink(图像超链 接)、StaticHyperLink(静态超链接)控件。
/xxgcx/zsyd/ç¨ åº è®¾è®¡è¯è¨ /PowerBuilder%20... 2002-12-7
PowerBuilder 8.0开发指南
页码,5/11
CONNECT:连接一个数据库事务对象。
DISCONNECT:断开已连接的一个数据库事务对象。
3.封装性
封装的目的是为了实现数据隐藏和数据保护。封装为对象提供了对外操作的接口,使其他对象通过函数来访问,而不允 许直接操纵对象的属性。在PB8中有三种访问类型Public、Protect、Private,这三种访问控制类型可以用在对象的变量 和函数上,缺省的实例变量和对象函数都是Public类型的。为保护数据,应尽可能使用Private和Protect类型,前者只 允许对象内部的元素来访问,后者可以接受对象内部和继承类的元素访问。

2024版pb教程入门到精通x

2024版pb教程入门到精通x

03PowerBuilder (PB )是一种高效能的应用程序开发工具,用于构建企业级的数据库应用。

PB 概述从官方网站下载安装包,按照安装向导逐步完成安装过程,包括同意许可协议、选择安装路径、配置组件等。

安装步骤支持Windows 操作系统,需要安装相应的数据库客户端或服务器。

环境要求pb 概述与安装界面布局PB的集成开发环境(IDE)包括菜单栏、工具栏、代码编辑器、对象浏览器等部分,方便开发者进行各种操作。

编码风格PB支持多种编程风格,如事件驱动、面向对象等,可根据项目需求选择合适的风格。

调试工具PB提供了强大的调试工具,包括断点设置、单步执行、变量监视等功能,帮助开发者快速定位并解决问题。

编程环境介绍01基本语法PB的语法基于Pascal语言,包括赋值语句、条件语句、循环语句等,易于学习和掌握。

02数据类型PB支持多种数据类型,如整型、浮点型、字符型、日期型等,满足不同类型数据的处理需求。

03数据类型转换PB提供了丰富的数据类型转换函数,方便开发者在不同数据类型之间进行转换。

基本语法与数据类型变量、常量与运算符变量PB中的变量用于存储程序运行过程中的临时数据,可根据作用域和生命周期进行分类。

常量常量是在程序运行过程中保持不变的量,可用于定义程序中的固定值。

运算符PB支持多种运算符,包括算术运算符、比较运算符、逻辑运算符等,用于实现各种复杂的计算和控制逻辑。

掌握`If...Then...Else`语句,实现基于条件的程序流程控制。

条件语句熟悉`For`、`While`等循环语句,实现重复执行某段代码的功能。

循环语句了解`Select Case`语句,根据不同情况执行不同代码块。

选择性语句学会使用`Exit`语句退出循环或程序,以及`End`语句结束程序。

退出与结束控制结构掌握如何定义函数,包括函数名、参数列表和返回值类型等。

函数定义明确过程与函数的区别,过程不返回值,而函数可以返回值。

过程与函数区别了解如何在程序中调用函数,传递参数并接收返回值。

PB的数据窗口操作

PB的数据窗口操作

PB的数据窗口操作PB(PowerBuilder)是一种基于面向对象的集成开发环境(IDE),主要用于构建企业级应用程序。

在PB中,数据窗口是一项非常重要的功能,可以用于对数据的处理、展示和修改。

下面将从数据窗口的基本操作、高级特性和数据窗口设计原则等方面,详细介绍PB的数据窗口操作。

一、数据窗口的基本操作1. 创建数据窗口:在PB中,可以通过向导或手动创建数据窗口。

创建数据窗口是通过选择数据源(数据库表、视图或存储过程)、选择数据窗口类型(Grid、Tabular等)和设置窗口布局等步骤完成的。

2.数据绑定:在数据窗口中,可以通过数据绑定将数据源与数据窗口中的控件关联起来。

通过设置数据绑定属性,可以实现数据的读取、展示和修改等功能。

3.数据检索:使用数据窗口可以方便地进行数据检索。

通过设置查询条件、排序方式和数据过滤等属性,可以按照需求从数据库中检索数据,并在数据窗口中显示出来。

4.数据更新:除了展示数据,数据窗口还可以用于数据的更新。

通过设置数据窗口的更新属性,可以实现数据的插入、修改和删除等操作。

同时,PB还提供了事务管理和数据验证等功能,确保数据的完整性和一致性。

5.数据导航:在数据窗口中,可以轻松地实现数据的导航功能。

通过设置数据窗口的导航属性,可以方便地浏览数据,并进行上一条、下一条、第一页和最后一页等操作。

6.数据格式化:PB提供了丰富的数据格式化选项,可以对数据窗口中的数据进行格式化和显示。

例如,可以设置日期格式、货币格式和数值格式等,以便更好地展示和分析数据。

二、数据窗口的高级特性1.动态数据窗口:PB允许动态创建和操作数据窗口。

通过使用动态数据窗口,可以在运行时动态改变数据窗口的结构和属性。

这对于动态查询和灵活的数据展示非常有用。

2.嵌套数据窗口:PB支持嵌套数据窗口的使用。

通过将一个数据窗口嵌套在另一个数据窗口内部,可以实现复杂的数据关联和显示。

例如,可以在父数据窗口中显示子数据窗口的数据。

pb数据窗口技巧

pb数据窗口技巧

pb中datawindow常用技巧一(2009-04-16 17:09:07)转载▼分类:PowerBuilder标签:杂谈pb中datawindow常用技巧一1、如何让存储文件目录的列,显示图片?答:选择对应的column的display as picture属性为true2、如何复制grid类型的所选择的行的数据到系统剪切板?答:string ls_selectedls_selected=dw_1.Object.DataWindow.Selected.Dataclipbord(ls_selected)4、如何设置的DW底色?在DW的editsource中改变color的值5、如何将Grid风格改成自由格式?在DW的editsource中将processing=1的1改为06、要新建一个表A但风格和现有表格B风格一样,怎么将A表快速设置成表B风格?复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可7、如何实现gird风格的datawindow的多栏表头?答:添加text到header带区,并设置band属性为foreground保存,edit source 修改text的x和width属性表达式如下:x="100~t integer(describe('firstcol.x')" width="100~tinteger(describe('lastcol.x')) - integer(describe('firstcol.x')) +integer(describe('lastcol.width'))8、如何过滤dddw编辑风格的显示值为指定值的记录?答:dw_1.setfilter("lookupdisplay('column_name')='"+ls_display_value_your+"'") dw_1.filter()9、如何设置datawindow的某一列为空?答:string ls_temp[]setnull(ls_temp)dw_1.object.columnname.primary.current=ls_temp10、如何设置datawindow的单双行不同颜色间隔?答:在detail带区的color属性表达式中写上if(mod(getrow(),2)=1 ,rgb(255,0,0),rgb(0,255,0)),如果是当前行以第三种颜色表示,表达式如下:if(getrow()=current(),rgb(255,0,0),if(mod(getrow(),2)=1 ,rgb(0,0,255),rgb(0,255,0)))11、如何获取指定名称的datawindowobject?答:DWObject ldwo_use,ldwo_abc ldwo_use = dw_1.Object ldwo_abc =ldwo_use.__get_attribute("t_1",FALSE)//t_1为datawindow中text对象的名称12、如何缩放datawindow的打印大小?答:dw_1.object.datawindow.zoom=150 or dw_1.object.datawindow.zoom=75 13、如何在已过滤后的数据基础上对datawindow进行过滤?答:dw_1.setfilter(dw_1.describe("datawindow.table.filter")+your_join+your_new_filt er)dw_1.filter()14、如何在datawindow中显示动态时间?答:建立一个计算域,表达式为string(datetime(today(),now()),'yyyy年mm月dd日hh点mm分ss秒'),同时设置datawindow的属性dw_1.Object.DataWindow.Timer_Interval=50015、如何让带用title bar的datawindow控件的标题栏诚活动窗口的颜色?答:外部函数定义:funcation logn SetActiveWindow(long hwnd ) Library "user32.dll" datawindow控件的clicked事件代码:setactivewindow(handle(this))16、如何设置datawindow的当前行指示图标?答:在datawindow中建立一个计算列,expression为'',并将该计算列移动为datawindow的第一个列,在datawindow控件的rowfocuschanged事件中写入代码:SetRowFocusIndicator(hand!)或setrowfucsindicator(p_1)//p_1为窗口上的picture控件名17、如何通过代码打开dddw?答:定义外部函数引用声明SUBROUTINE keybd_event( int bVk, int bScan, int dwFlags, int dwExtraInfo) LIBRARY "user32.dll"代码如下:[constant integer VK_F4 = 115dw_1.SetFocus()dw_1.SetColumn( "dept_head_id" ) //设置当前dddwkeybd_event( VK_F4,0,0,0 ) // 按下F4键keybd_event( VK_F4,0,2,0 ) // 释放F4键18、如何打印datawindow的内容到文件中?答:dw_1.object.datawindow.print.fileName ="c:\temp.prn"dw_1.print()19、如何设置dddw的初始值?答:dw_1.object.columnname.Initial="your_initial_value"20、如何只显示不同的数据?答:dw_1.filter("isnull(columnname[-1]) and columnname<>columnname[-1]") dw_1.filter()21、如何让带有title bar的datawindow不可以移动?答:在datawindow的自定义事件ue_nchittest(pbm_nchittest)中写入如下代码:return 122、如何在N-UP显示风格中建立基于第N栏中的列的计算列?答:如column有两列,number和price ,并显示为两栏,则第一栏的cost计算列的expression为number*price,第二栏的cost_1计算列的expression为number[1]*price[1]23、如何清空ddlb或edit.codetable中项目?答:dw_1.Object.columnname.Values=""24、如何实现指定的column的字体旋转90度?答:dw_1.object.columnname.font.Escapement ="900"25、如何获取datawindow的sql代码?答:可以通过以下四种方法获取sql代码:string szselectszselect=dw_1.describe("datawindow.table.select")szselect=dw_1.describe("datawindow.table.sqlselect")szselect=dw_1.describe("datawindow.table.select.attribute")szselect=dw_1.getsqlselect()27、如何获取datawindow对象占有的虚拟存储的容量?答:使用datawindow.storage属性举例:在datawindow控件的retrieverow事件中,写如如下代码:long lstoragelstorage=long(dw_1.object.datawindow.storage)if lstorage>50000 then dbcancel()28、如何连续在同一张纸打印两个数据窗口?答:dw_1.object.datawindow.print.filename="temp.prn"dw_2.object.datawindow.print.filename="temp.prn"dw_1.print()dw_2.print()29、如何设置datawindow分组后每个分组中的记录号?答:建立一个计算列,expression为getrow() - first(getrow() for group 1)+1 30、如何实现在datawindow中只有新增的行,才可以编辑?答:在所有的column的protect属性表达式中写入以下表达式:if(isrownew(),'0','1')31、除了循环以外,有没有更好的方法统计数据窗口中处于选中状态的行数?一般习惯于使用循环来统计数据窗口中处于选中状态的行数,有没有更好的方法?其实此问题在应用上用处不大,讨论一下,活跃一下思维还是有好处的。

pb 回调函数

pb 回调函数

pb 回调函数介绍近年来,随着人工智能、物联网等技术的发展,网络通信协议也得到了快速的发展。

在这些协议中,PB (Protocol Buffers)协议因其高效的数据表示、跨语言支持等优点,被广泛应用于互联网的通信领域。

其中,PB 回调函数是PB协议的一个重要特性,可以实现数据的异步处理、事件监听等功能,为应用程序的开发提供了很大的灵活性。

PB协议概述 Protocol Buffers(简称PB)是Google 发布的一种高效的数据存储和通信协议,采用二进制格式存储数据,在数据传输、存储等方面有着比XML、JSON等格式更快、更小的优势。

由于其跨语言的支持性,PB协议可以被多种编程语言所使用,如Java、C++、Python等。

PB协议中的核心概念是Message,它可以看作是一种结构化数据类型,类似于C++中的类或Java中的对象。

Message通常由多个字段组成,每个字段具有一个名称、一个类型和一个数值。

Message可以嵌套使用,形成复杂的联合数据结构,从而实现数据的组织和表示。

PB协议还支持RPC(Remote Procedure Call)远程过程调用框架,通过定义服务和方法的接口,实现跨网络的方法调用,方便应用程序之间的通信。

在RPC中,PB协议扮演了重要的角色,支持在网络中传输PB数据类型实现数据的传输和交互。

PB回调函数除了RPC以外,PB协议还提供了另一个重要的机制,即PB回调函数。

PB回调函数可以理解为一种事件处理机制,它在某个事件发生时自动触发并执行相应的操作。

比如,当一个RPC调用完成后,就会调用相应的回调函数,将返回结果传递给调用方。

PB回调函数的定义格式如下:``` // 定义回调函数 voidcallback_function(const ResponseMessage& response,void* context);// 调用函数 void ServiceStub::AsyncMethod(const RequestMessage& request, grpc::CompletionQueue* cq, void* context, grpc::StatusCallback* callback); ```其中,callback_function是用户自定义的回调函数,用于处理RPC调用的返回结果;ResponseMessage是RPC调用的返回结果数据类型;context是传递给回调函数的用户数据,可以在RPC方法中进行设置;AsyncMethod是RPC服务方法的异步调用函数,它将请求和相关参数打包成一个任务,加入到CompletionQueue队列中等待执行,RPC方法执行完成后,将调用用户自定义的回调函数。

Pb常用概念与术语及script编程规范

Pb常用概念与术语及script编程规范1.dbms数据库管理系统的缩写,它是可以提供数据库管理功能的软件2.Profile保存在pb初始化文件中的命名的参数的集合,它定义一个指向数据库的连接3.Data Source数据源,pb有五种数据源:QUICK SELECT,SQL SELECT,QUERY,EXTERNAL和STRORE PROCEDURE4.ODBC开放数据库连接的缩写,是微软提供的访问数据库的接口标准.通过ODBC接口,PB可以连接到大部分DBMS5.MTSMTS是微软事物服务器的缩写,它是基于一个组件的事物处理系统,支持开放.发行和管理基于组件的应用PONENT组件是在JAGUAR中或MTS中的一个包含业务逻辑的可重用模块.用户对象可以作为组件发行到中间层的JAGUAR或MTS服务器中.7.LIBRARY库,存储PB对象的文件,它的扩展名是.PBL8.PAINTER画笔,创建和编辑PB对象的编辑器,或是管理数据或库的工具9.APPLICATION OBJECT应用对象是一个应用系统的入口点,它定义乐系统的一些应用级行为10.SCRIPT脚本是响应特定事件的一段语句的集合.在PB中编写脚本执行POWERSCRIPT语言11.PRIMARY KEY主健,唯一标识表中每一条记录的一个或多个列.EROBJECT用户对象,用户自定义的用于完成某项处理的.可重复使用的对象13.FOREIGN KEY外部键,是一种约束,要求构成外部键的一个或多个列的值必须对应主健表中的一个值14.EVENT事件,一个发生在对象或控制中的动作,可以触发一段脚本程序的执行.15.FUNCTION函数,执行特定处理的例程,在面对对象编程中,也称方法. 16.POLYMORPHISM多态,同一个对象中的两个或多个名字相同,参数列表不同的函数17.METHOD方法,在面对对象编程中,方法是一个于对象有关的函数或例程18.EXTENDED ATTRIBUTES扩展属性,数据库列的扩展信息定义19.ENCAPSULATION封装,将相关的数据和过程打包在一个对象中.20.DESCENDANT后代,继承祖先对象而产生的对象,与祖先对象有相同的功能21.DATAWINDOW OBJECT数据窗口对象,查询和维护关系数据库或其他数据源中数据的对象.22.INHERITANCE继承,一种通过已存在的对象创建窗口.菜点和用户对象的方法23.DDEDDE是动态数据交换的缩写,是WINDOWS应用之间传递数据的一种协议24.OCX是OLE自定义控制.25.OLE是对象连接和嵌入的缩写,它可以使用WINDOWS应用程序使用其他程序及数据26.CONTRAL控制,用于窗口和数据窗口及可视用户对象设计的图形对象,负责应用系统于用户的交互,也称控件是组件对象模型的缩写.28.BLOB一种用于存储大量数据的数据类型.29.ACTIVEX基于COM的技术,允许软件之间相互交互30.ANCESTOR祖先,是用于后代继承的对象,相当于一个定义了一些基本功能的类。

PB数据窗口技巧大全

PB数据窗口技巧大全PB数据窗口是PowerBuilder语言中的一种常用控件,用于显示和操作数据。

在实际项目开发中,掌握一些PB数据窗口的技巧能够提高开发效率和用户体验。

下面是一些常用的PB数据窗口技巧的详细介绍,包括动态数据源、处理数据更新、格式化数据、控制数据窗口行为等方面。

1. 动态数据源:PB数据窗口支持通过修改SQL语句和参数实现动态查询。

可以通过修改dw_1.sqlsyntax和dw_1.settransobject等属性实现动态数据源切换或过滤。

2. 处理数据更新:PB数据窗口提供了一些方法来处理数据的插入、更新和删除。

可以使用dw_1.insertrow、dw_1.updaterow和dw_1.deleterow等方法来实现数据的增删改操作。

3. 格式化数据:PB数据窗口提供了一些格式化数据的方法,可以通过修改数据窗口列的format属性来实现对数据的格式化。

例如,可以使用dw_1.modify表示列的format属性来自定义数据的显示格式。

4. 排序和过滤数据:PB数据窗口提供了排序和过滤数据的功能。

可以通过修改dw_1.setsort和dw_1.setfilter等方法实现对数据的排序和过滤。

5. 控制数据窗口行为:PB数据窗口提供了一些属性和方法来控制数据窗口的显示效果。

例如,可以使用dw_1.retrieve来重新检索数据,使用dw_1.setitemstatus来设置数据窗口的状态等。

6.多表连接查询:PB数据窗口支持多表连接查询,可以通过在SQL 语句中使用连接符号和条件来实现多表连接查询的功能。

7.数据窗口插入计算列:PB数据窗口支持插入计算列,可以通过在SQL语句中使用函数和表达式来插入计算列实现对数据的计算和处理。

8.数据窗口多级分组:PB数据窗口支持多级分组,可以通过在数据窗口中设置分组列和聚合函数来实现数据的分组和统计。

9.数据窗口嵌套:PB数据窗口支持嵌套,可以在一个数据窗口中插入另一个数据窗口,实现数据的嵌套显示和处理。

PB之常用函数


Return1
//不允许关闭
EndChoose //用户所有的选择情况处理完毕
通过上面的脚本,可以为用户提供一个很健壮的数据处理窗口。即使直接关闭该窗口,在数据窗口中所做的数据修改也不会丢失,除非用户 自己想放弃。
另外,需要注意的是,在其他事件中调用或者触发(使用TriggerEvent函数、PostEvent函数或者是对象名称.Event 事件名称格式调用事 件)Close事件,都只是执行该事件中的脚本,并不真正关闭窗口。也就是说,应该区别事件和事件处理脚本,这两者虽然有很多的联系但 并不相同。 PB中的所有事件和事件处理脚本都是有区别的。
row:要设置数据的行,为long类型。
column:要设置数据的列,可以是string类型的列名称,也可以是integer类型的列号。
插入空行:insertrow(0) dw_name.insertrow(0) 通常配合插入行使用的是滚动行 dw_name.scrolltorow(dw_name.insertrow(0)) \\滚动到插入行 比如:int row
row = dw_1.insertrow(0)
//显示
dw_1.scrolltorow(row)
该函数有返回值,1,2,3对选择的按键。
基本写法事例: MessageBox('此处为标题,'此处为内容') 完整写法事例: if MessageBox('提示信息','是否删除?',&Question! ,OKCancel! , 1 ) = 1 then//选择确定 MessageBox('提示信息', '你选择了删除') else//选择取消
//使用

PowerBuilder窗口及窗口上的控件


§1.3.3窗口上控件的调整
▪ 选中窗口上的控件 :选中一个控件,选中多个控件; ▪ 调整窗口上的控件 :
▪ 定义光标在控件上的跳转顺序
§1.3.4控件的编程
▪ 窗口上的每个控件都有相应的事件,用户可根据需要编写事 件处理程序。方法如下:
▪ ① 选择要编程的控件。 ▪ ② 单击鼠标右键,从弹出菜单中选择Script项,或单击图标,
▪ 为标签控件增加标签页 ▪ 修改标签控件中Tab页的属性 ▪ 修改标签控件的属性
1.4.8数据窗口(DataWindow)控件
▪ 这里的数据窗口控件只不过是窗口上的一个空白的控件,与 第七章中讲的数据窗口对象不是一回事。当这个空白的数据 窗口控件建立好后,再将它与某个数据窗口对象建立联系, 在系统运行时,用户通过窗口上的数据窗口控件来操纵数据 窗口对象,完成对数据库的操作(录入、修改、删除等)。
1.2.3在窗口上放置控件
▪ 创建新窗口时,除了要设置窗口的属性外,还要在窗口上放 置控件,只有这样窗口才能和用户进行交互,即接收用户的 输入信息,并把信息呈现给用户。把控件放置到窗口上后, 还可以定义控件的属性及对控件编程。详见§1.3。
§1.2.4窗口的保存
▪ 应随时保存正在创建或修改的窗口。保存窗口的方法如下: ▪ ① 从菜单栏中选择File—>Save,也可单击画板PainterBar工具栏上的Save图标,
▪ 静态文本(StaticText)控件 ▪ 单行编辑器(SingleLineEdit)控件 ▪ 多行编辑器(MultiLineEdit)控件 ▪ 编辑掩码 (EditMask)控件 ▪ 超文本编辑(RichTextEdit)控件
§1.4.4列表选择
▪ 当应用程序只用到少数几个选项时,使用单选钮和复选框既简单又方便。但是 当选项较多且运行时可能变化,单选钮和复选框就显得力不从心了。此时,我 们可以利用列表方式为用户提供多重选择。PowerBuilder提供了以下四个控件 完成列表选择:列表框、图片列表框、下拉列表框和下拉图片列表框。下面分 别进行介绍。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

create by amu on 2012-08-16----------------------------------------------------------------------------------------1.window中的事件事件名触发的时机01.Activate 在窗口激活之前触发02.Clicked 当用户用鼠标单击窗口的空白区域(没有控件的区域)时触发03.Close 当关闭窗口时触发04.CloseQuery 当清除或关闭窗口时触发。

然后检查Message.ReturnValue的值,若为1,则窗口不能关闭05.Deactivate 当窗口变为非活动状态时触发06.DoubleClicked 当用户双击窗口的空白区域时触发07.DragDrop 当一个可拖动的控件被拖动到窗口上时触发08.DragEnter 当一个可拖动的控件进入窗口时触发09.DragLeave 当一个可拖动的控件离开窗口时触发10.DragWithin 当一个可拖动的控件在窗口内部拖动时触发11.Hide 在窗口被隐藏时触发12.HotLinkAlarm 在DDE中服务器应用已经发送了新的数据,客户DDE应用已经接收到这些数据时触发13.Key 当用户击了一个键且插入点不在RichTextEdit编辑控件或数据窗口控件时触发14.MouseDown 当用户在窗口的空白区域按下鼠标左键时触发15.MouseMove 当鼠标在窗口内移动时触发16.MouseUp 当用户在窗口的空白区域释放鼠标左键时触发17.Open 当程序调用以此窗口为参数的Open函数时,此事件在该窗口打开之后,显示之前触发18.Help .........19.Other 当一个非PowerBuilder事件的Windows信息发生时触发20.RButtonDown 在窗口的空白区域单击鼠标右键时触发21.RemoteExec 当一个DDE客户应用发送了一个命令时触发22.RemoteHotLinkStart 当一个DDE客户应用开始一个热连接时触发23.RemoteHotLinkStop 当一个DDE客户应用结束一个热连接时触发24.RemoteRequest 当一个DDE客户应用请求数据时触发25.RemoteSend 当一个DDE客户应用已经发送了数据时触发26.Resize 当用户或程序打开或重设窗口大小时触发27.Show 当程序运行此窗口的show函数时,此事件在窗口显示之前触发28.SystemKey 当插入点不在某个行编辑中且用户按了ALT或ALT加其它键时触发29.Timer 在调用Timer函数后,经过了Timer函数指定的时间后触发30.ToolBarMoved 当MDI窗口的工具条移动时触发以上是我新建一个window是window的事件原来的顺序,下面是我自己常用的排序:01.window打开时发生的事件事件名触发的时机Activate 在窗口激活之前触发Resize 当用户或程序打开或重设窗口大小时触发Open 当程序调用以此窗口为参数的Open函数时,此事件在该窗口打开之后,显示之前触发Show 当程序运行此窗口的show函数时,此事件在窗口显示之前触发02.window关闭时发生的事件Deactivate 当窗口变为非活动状态时触发CloseQuery 当清除或关闭窗口时触发。

然后检查Message.ReturnValue的值,若为1,则窗口不能关闭Close 当关闭窗口时触发03.关于鼠标击键事件Clicked 当用户用鼠标单击窗口的空白区域(没有控件的区域)时触发DoubleClicked 当用户双击窗口的空白区域时触发MouseDown 当用户在窗口的空白区域按下鼠标左键时触发MouseMove 当鼠标在窗口内移动时触发MouseUp 当用户在窗口的空白区域释放鼠标左键时触发、RButtonDown 在窗口的空白区域单击鼠标右键时触发注:当按下鼠标左键时,MouseDown事件触发,当释放鼠标左键时,Clicked事件和MouseUp 事件触发04.计时触发Timer 在调用Timer函数后,经过了Timer函数指定的时间后触发05.托动触发DragDrop 当一个可拖动的控件被拖动到窗口上时触发DragEnter 当一个可拖动的控件进入窗口时触发DragLeave 当一个可拖动的控件离开窗口时触发DragWithin 当一个可拖动的控件在窗口内部拖动时触发06.菜单及菜单工具栏移动是触发ToolBarMoved 当MDI窗口的工具条移动时触发07.其它不常用的(指的是我自己)Hide 在窗口被隐藏时触发HotLinkAlarm 在DDE中服务器应用已经发送了新的数据,客户DDE应用已经接收到这些数据时触发RemoteExec 当一个DDE客户应用发送了一个命令时触发RemoteHotLinkStart 当一个DDE客户应用开始一个热连接时触发RemoteHotLinkStop 当一个DDE客户应用结束一个热连接时触发RemoteRequest 当一个DDE客户应用请求数据时触发RemoteSend 当一个DDE客户应用已经发送了数据时触发Key 当用户击了一个键且插入点不在RichTextEdit编辑控件或数据窗口控件时触发Help .........Other 当一个非PowerBuilder事件的Windows信息发生时触发SystemKey 当插入点不在某个行编辑中且用户按了ALT或ALT加其它键时触发-----------------------------------------------------------------------在window上的能应用的控件非常多但是控件的事件有一部分是相同的2.窗口上控件的公共事件事件名触发的时机Clicked 当单击窗口或控件时触发Constructor 在窗口中的open事件发生之前触发Destructor 在窗口中的close事件发生之后触发GetFocus 在此控件得到焦点上时触发LoseFocus 在此控件失去焦点时触发DragDrop 当一个可拖动的控件被拖动到窗口或控件上时触发DragEnter 当一个可拖动的控件进入窗口或控件上时触发DragLeave 当一个可拖动的控件离开窗口或控件时触发DragWithin 当一个可拖动的控件在窗口或控件内部时触发RbuttonDown 在控件区域内单击鼠标右键时触发Other 当一个非PowerBuilder事件的Windows信息发生时触发-------------------------------------------------------------------------3.datawindow上的事件,按照顺序(除开公用事件)事件名称事件触发的时机01.ButtonClicking 在数据窗口中的按钮对象正在被单击时触发02.ButtonClicked 在数据窗口中的按钮对象被单击后触发03.DbError 当数据窗口中发生了数据库错误时触发04.DoubleClicked 当用户双击数据窗口控件时触发;对于RichText风格的数据窗口,当双击数据窗口中的文本时触发05.EditChanged 当光标进入数据窗口对象中的一个字段时触发06.Error 当数据窗口数据表达式或属性表达式中发现错误时触发07.ItemChanged 当数据窗口上的区域被修改并且失去了焦点(如用户按回车键、Tab键或箭头键,或者用鼠标选另一个区域)时触发08.ItemError 当一个域被修改并且失去焦点,且域不符合列上的合法性规则时触发09.ItemFocusChanged 当焦点改变时触发10.PrintStart 当数据窗口打印开始时触发11.PrintEnd 当数据窗口打印结束时触发12.PrintPage 在数据窗口的每一页设置打印格式之前触发13.Resize 当用户或程序重设窗口大小时触发14.RetrieveStart 当数据窗口检索将要开始时触发15.RetrieveEnd 当数据窗口的检索完成时触发16.RetrieveRow 在一行数据被检索出来之后触发17.RowFocusChanging 当数据窗口当前行正在改变时触发18.RowFocusChanged 当数据窗口当前行改变之后触发19.ScrollHorizontal 当用户用Tab键、箭头键或滚动条左右滚动数据窗口控件时触发20.ScrollVertical 当用户用Tab键、箭头键或滚动条上下滚数据窗口控件时触发21.SqlPreview 在调用Retrieve、Update或Selectrow函数时,SQL语句提交到DBMS之前触发22.UpdateStart 恰在调用Update函数之后,数据窗口中的改变发送到数据库之前触发23.UpdateEnd 当所有从数据窗口到数据库的修改完成时触发说一下我个人常用的几种事件01.数据窗口字段输入的时候触发的事件EditChanged 当光标进入数据窗口对象中的一个字段时触发ItemChanged 当数据窗口上的区域被修改并且失去了焦点(如用户按回车键、Tab 键或箭头键,或者用鼠标选另一个区域)时触发ItemFocusChanged 当焦点改变时触发ItemError 当一个域被修改并且失去焦点,且域不符合列上的合法性规则时触发如果EditChanged,ItemChanged,ItemFocusChanged这三个事件报错促发ItemError如果在ItemChanged事件中设置了行为/返回代码1,则DataWindow控件拒绝接受数据且不允许焦点发生变化02.鼠标单双击数据窗口按钮ButtonClicking 在数据窗口中的按钮对象正在被单击时触发ButtonClicked 在数据窗口中的按钮对象被单击后触发eg:choose case case 'cb_name'//动作......case .......end choose03.数据窗口检索前后触发的事件RetrieveStart 当数据窗口检索将要开始时触发RetrieveEnd 当数据窗口的检索完成时触发RetrieveRow 在一行数据被检索出来之后触发在RetrieveStart事件中设置了行为/返回代码2,在检索数据之前不要重置行,也就是上次retrieve的数据会被保留下来04.打印前后PrintStart 当数据窗口打印开始时触发PrintEnd 当数据窗口打印结束时触发PrintPage 在数据窗口的每一页设置打印格式之前触发05.其它的我自己不常用,就不多说了------------------------------------------------------------------4.单行编辑器控件、编辑掩码控件、多行编辑控件的事件这三个控件有相同的事件,都有公共事件中除了Clicked事件之外的10种事件,另外还有Modify事件Modify事件在控件的文本被改变之后,用户按了回车键或Tab键,或用鼠标把焦点改变到另一个控件上时触发---------------------------------------------------------------------5.超文本编辑控件的事件事件名称触发的时机01.FileExists 当该控件的内容保存到一个已存在的文件时触发02.InputFieldSelected 当选定输入域后双击或按下回车键时触发03.key 当按下一个键时触发04.Modify 当该控件中的内容第一次改变,但还没有保存时触发05.MouseDown 当按下鼠标左键时触发06.MouseMove 当鼠标在该控件中移动时触发07.MouseUp 当放开鼠标左键时触发08.PictureSelected 当选定位图后双击或按下回车键时触发09.PrintFooter 当打印该控件内容的页脚时触发10.PrintHeader 当打印该控件内容的页眉时触发11.RbuttonUp 当在该控件中放开鼠标右键时触发---------------------------------------------------------------------6.滚动条事件左右滚动条事件名称事件触发时机LineLeft 当点中了控件的左箭头时触发LineRight 当点中了控件的右箭头时触发PageLeft 当点中了控件的左部的开放空间时触发PageRight 当点中了控件的右部的开放空间时触发Moved 当控件的滚动钮被移动时触发上下滚动条事件名称事件触发时机LineDown 当点中了控件的下箭头时触发LineUp 当点中了控件的上箭头时触发PageDown 当点中了控件的下部的开放空间时触发PageUp 当点中了控件的上部的开放空间时触发Moved 当控件的滚动钮被移动时触发----------------------------------------------------------------------7.列表框控件的事件PowerBuilder提供了四个列表框控件:列表框、图片列表框、下拉列表框和下拉图片列表框。

相关文档
最新文档