PB自定义事件

合集下载

PB教程

PB教程

POWERBUILDER教程第一章概述1.1特点1.事件驱动在事件驱动方式中,程序的运行没有固定的流程,程序的代码也是为各种可能发生的事件编写,当程序开始运行后,它可以接受来自系统、用户或其他应用程序触发的事件,然后执行事件代码。

建立窗口、控件和其他应用部件时都含有一组预定义的事件。

例如:clicked(单击),用户也可以定义自己的事件。

2.面向对象Windows应用程序中常见的窗口、菜单、控件在powerbuilder中都是一个个对象。

同时,也可以创建自己的用户对象。

每个对象都有自身的特征和行为(属性、事件和函数)。

Powerbuilder提供了基础类库PFC,它为应用程序开发提供了许多可重用的预定义类和对象,利用基本类库PFC可以快速开发高质量、重用好的应用程序。

3.Powerscript语言Powerbuilder中,所有的处理逻辑都是用powerscript语言编写,powerscript是PowerBuilder是专用语言。

4.强大的数据库窗口对象数据窗口对象是PowerBuilder中的一种对象类型,是专门为访问后台的数据库服务的,在数据窗口对象中可以定义数据的来源和数据的显示风格,这样在应用程序就可以把精力完全放在程序的流程控制上,而不用关心具体数据的来源。

如果需要使用数据库中不同的数据,也只要对数据窗口对象进行修改就可以。

5.其他特点支持internet、支持分布式应用、支持多平台、支持大多数关系型数据库(Sybase、MS SQLSERVER、ORACLE等等以及ODBC等其他数据源)等等1.2安装略注:升级至7.0111.3开发环境IDE1 菜单栏图标第一章库文件工具栏图标第二章对象编辑工具栏图标第三章库文件编辑区第四章对象编辑区第五章Datawindow编辑器1.4 预备知识一个PowerBuilder应用程序一般由若干个窗口组成,每个窗口有若干个控件(如按钮、菜单、文本等),每个对象或控件都有若干个事件(如按钮的单击或双击等),每个事件将对应一段程序。

PB编程规范

PB编程规范

编程规范(PB)1简介1.1简介这个文档描述了用于编写稳定、可靠的PowerBuilder应用程序的一些标准、约定和准则。

他们基于合理的,经过证实的一些使代码容易理解、维护和增强的软件工程的原则。

另外,遵循这些标准,你作为一个PowerBuilder程序员的生产力将有一个显著的提高。

一些经验证明,花时间在项目的开始写出高质量的代码,可以使在后来的开发过程中容易修改它,从而事半功倍。

最后,遵循这一系列编码规范,可以使一个开发团队更好地保持一致性,最终必将极大地提高团队的生产力。

1.2最初的准则和最终的准则当你无法找到一些你需要的原则或准则时,或者它们很明显地不适用,或者其它的一些情况下,请使用常识,按照一些基本的原理去作。

这个原则凌驾于其他原则。

2命名规范2.1一般性约定1.使用英文或汉语拼音的全称去准确地描述各种对象、变量例如,ls_UserName (用户名) ,ldc_GrandTotal(总计)等等。

尽管x1,y1这样的名称很容易拼写,因为它们很短,但是他们不可能明确地提示名称的含义,将导致代码难以理解、维护和改进。

2.使用大小写混合的方式命名3.以合适的方式使用缩写例如ll_RownNmber,简写为ll_RowNum是可以理解的,但是li_ReturnCode简写为li_rc就不一定被别人看懂,所以应该以尽量保守的态度使用缩写,在更多的时候使用全称,或者建立常用缩写的对照表。

4.避免太长的名称,尽量限制在15个字母以内长名称虽然很容易懂,但特别长将导致拼写时经常出错。

5.不要在第一个字母和最后一个字母使用下划线6.保持命名的一致性。

相关的东西应给以相关的名字,以说明他们的关系和差异2.2具体约定2.2.1对象命名规范<前缀>_名称注:名称为英文,新建对象必须加注释(菜单对象可例外)。

一般情况下,菜单对象的名称与其所属窗口的名称一致。

例子:w_master , m_master , d_cig_cdu_tvs is the TreeView visual user objectu_dw is the DataWindow visual user objectn_cst_dwsrv is the custom class user object for DataWindow servicesn_tr is the transaction standard class user object and is in the extension level2.2.2变量范围命名规范<范围><数据类型>_变量名范围:对于标准数据类型:例子:as_unitcode 表示事件或函数的输入参数,string类型idc_val 表示实例变量,decimal 类型li_row 表示局部变量,integer 类型gd_firstday 表示全局变量,date类型对于常用参照数据类型(reference variables):例子:datastore lds_unitDataWindowChild ldwc_cigwindow lw_code注:1) 尽量避免使用全局变量。

pb自定义事件详细

pb自定义事件详细
pbm_emlimittext 限制用户键入的文本长度。
pbm_emlinefromchar 返回被选文本的行号。
pbm_emlineindex 返回编辑器控件中被选行第一个字符在编辑串中的位置。
pbm_emlinelength 返回编辑器控件中被选行中的字符数。
pbm_emlinescroll 水平或垂直卷滚编辑器控件。
pbm_dwscrolllinehome 卷滚到当前行的行首(水平方向)。
数据窗口通知消息(前缀:pbm_dwn)
pbm_dwnbacktabout 即将通过Shift+Tab组合键离开该控件。
pbm_dwnchanging 控件即将被改变。
pbm_dwndropdown 下拉式列表框的下拉部分即将可见。
pbm_dwnprocessenter 回车键被按下。
pbm_dwnrowchange 数据窗口中聚焦从一行转向另一行。
pbm_dwntabdownout 用户在数据窗口最后一行按了下箭头键。
pbm_dwntabout 用户在数据窗口的最后一行/列中按了tab键。
pbm_dwntabupout 用户在数据窗口第一行中按了上箭头键。
列表框通知消息(前缀:pbm_en)
pbm_emreplacesel 从剪贴板或从键盘上用新文本替换被选文本。
pbm_emsethandle 设置编辑器控件的句柄指向内存中的一个缓冲区。
pbm_emsetmodify 设置编辑器控件的modified标志。
pbm_emsetpasswordchar 设置用户输入任何文本时显示的字符,在输入密码时的显示。
pbm_ememptyundobuffer 清空由Windows管理的取消操作的缓冲区。

PB中很实用的小技巧

PB中很实用的小技巧

1.RGB函数计算公式: 颜色值= (65536 * Blue) + (256 * Green) + (Red)2.控件可拖动:send(handle(this),274,61458,0)3.如何用程序控制下拉子数据窗口的下拉和收起用modify或者直接用dw_1.object.col1.dddw.showlist = true4.检索参数有些不需要传入则传%.5.如何屏蔽鼠标滚轮触发在控件的other事件写if message.number = 522 then return 16.得到数据窗口的语法:string ls_dwsyntaxls_dwsyntax=dw_1.describe("datawindow.syntax")7.得到数据窗口中各列及标题:long ll_count,istring ls_value,ls_colnamell_colnum = Long(dw_1.object.datawindow.column.count)for i = 1 to ll_colnum//得到标题头的名字ls_colname = dw_1.describe('#' + string(i) + ".name") + "_t"ls_value = dw_1.describe(ls_colname + ".text")next8.在程序中动态设置初始值:ex:dw_contro.object.columnName.initial = 'xxxx'9.如何在DataWindow的SQL语法中不使用SELECT DISTINCT实现删除重复的行---- 起先对你要显示唯一值的列进行排序:"city A",然后增加如下过滤字符串:" city < > city [-1] or GetRow () = 1"10.如何改变列的字体颜色,提醒用户此列已做修改---- 在列的Color属性中,输入如下表达式IF (column_name< >column_name.Original, RGB(255, 0, 0), RGB(0, 0, 0))。

PB的小技巧

PB的小技巧

PB的小技巧1.如何使DataWindow中的数据只能追加新记录而不能修改。

利用Column 的Protect 属性可以很方便的做到这一点,方法如下:将每一列的Protect 属性设置为:If( IsRowNew(), 0, 1) )在PowerScript 中可以动态修改Protect 属性:dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'")2. 允许从空的非字符字段跳离string ss = this.dwDescribe(this.GetColumnName()+".coltype")//s = this.dwDescribe("#"+String(this.GetColumn())+".coltype")CHOOSE CASE sCASE "number"IF Trim(this.GetText()) = "" THENint null_numSetNull(null_num)this.SetItem(this.GetRow(),this.GetColumn(),null_num)this.SetActionCode(3)END IFCASE "date"IF Trim(this.GetText()) = "" THENdate null_dateSetNull(null_date)this.SetItem(this.GetRow(),this.GetColumn(),null_date)this.SetActionCode(3)END IFCASE "time"IF Trim(this.GetText()) = "" THENtime null_timeSetNull(null_time)this.SetItem(this.GetRow(),this.GetColumn(),null_time)this.SetActionCode(3)END IFCASE "datetime"IF Trim(this.GetText()) = "" THENdate null_datetimeSetNull(null_datetime)this.SetItem(this.GetRow(),this.GetColumn(),null_datetime)this.SetActionCode(3)END IFEND CHOOSE3. 当我们为Datawindow的每一行显示行号时可以简单的放一个表达式为GetRow() -- 计算列。

PowerBuilder实用教程第9章 用户自定义事件

PowerBuilder实用教程第9章 用户自定义事件

用户事件编程实例
⑯为数据窗口“dw_1”再定义一个用户事件“u_keyarrow”,事件号为“pbm_dwntabdo
在定义用户事件时,可以定义事件参数。但TriggerEvent和PostEvent不能带事件参数(但可以 为Message传送用户消息),因此需用下面的格式触发: object_name. [Trigger | Post] [Static | Dynamic] EVENT event_name( [para_list] )
为实现如图9.5所示的功能,可用自定义事件。 (1)创建一个“student.pbl”,其中 “ApplicationObject”为“stu”,再建一个窗 口“w_uevent”,窗口中的控件分别为 “dw_1”“cb_append”“cb_insert”“cb_d elete”“cb_retrieve”“cb_update”和 “cb_return”。 建立数据窗口对象“d_xs”,将“dw_1”的 “DataObject”属性设为“d_xs”。
PowerBuilder实用教程(第5版)
第9章 用户自定义事件
——用户事件号
用户事件号
PowerBuilder没有提供事件标记的说明手册,但大部分可以从标记名推断其含义。表9.1列出 了部分常用事件标记的前缀及其含义,表9.2列出了部分常用事件标记及其含义。
前 缀 pbm_cb pbm_dw pbm_dde pbm_e 含 义 通用对话框消息 数据窗口 前 缀 pbm_lb pbm_lv 列表框 列表视图(Listview) 树形视图(Treeview) 窗口 含 义
PowerBuilder实用教程(第5版)
第9章 用户自定义事件
——定义用户事件
在下列情况下经常使用用户事件。 (1)解决对象与窗口之间的通信问题。用户事件可以通过参数进行信息传递。 (2)响应特殊操作,这些操作没有相应的PowerBuilder预定义事件。例如,大多数的人都习 惯于在每项数据录入后按【Enter】键,转到下一个输入项。但在Windows环境下,系统都是默认 使用【Tab】键或【Shift+Tab】键转换到下一个数据项或上一个数据项,而用户按【Enter】键, 系统会将焦点转到下一条记录的第一个输入项上。 (3)支持用户通过多种方式完成同一个功能。例如,既允许用户通过单击窗口中的按钮完成, 也允许用户通过选择选单项完成。使用用户事件后,就只需要在一个地方编写代码,在需要使用该 功能的地方触发相应的用户事件就可以了。

pb的基本函数

pb的基本函数

1、Open 两种格式:一个是带参数的还有一个是不带参数的不带参数的是不确定具体的数据类型的2、Opensheet() opensheet(指定窗口名,{指定要打开的窗口的类型},指定要放置的工作表的框架窗口名,所打开的窗口是在第几个菜单下生产默认值为倒数第二个,打开方式arrangeopen。

)打开方式分为三种:cascade、layered、original。

Cascade:向右下方偏移。

默认值如果缺少的话Layered:最大化Original:与cascade相同。

只是打开的时候与原来的一样大3、Close4、Setfocus() 将焦点设置到指定控件上Objectname.setfocus() 如果objectname是列表框的话则控件将指向列表框的第一列表项上。

5、SelectText()返回该控件所选的文本。

返回值为long Singlelineeditname.selecttext(start,length)6、GetColumn()和GetColumnname()两个都没有返回值:第一个是返回当前列的列好,第二个则是返回当前列名7、Update()8、DeleteRow()Dwcontrol.deleteRow(row) row表示要删除的行数,当该值为0时则表示删除该行1、insert row 在数据窗口控件指定行前面插入一行dwcontrol.insertrow(row) scrolltorow():使新插入的行成为当前行。

2、ScrollToRow() 使用方法:rtename .scrolltorow(row)Rtename超文本编辑框的名称。

如果row的值为0的话则就回滚到第一行,如果row的值大于超文本的行数则回滚到最后一行3、selectedColumn()返回插入点后第一个字符的位置rtename.selectedcolumn()4、setcloumn5、print() 以当前字体在打开的打印作业中打印一行或多行文本print(printjobnumber,{tabl},string{,tab2})tab1为文本开始打印的位置,以千分之一英寸为单位。

《PB程序设计》第9章用户自定义事件

《PB程序设计》第9章用户自定义事件

返回本节 录
9.4 触发用户事件
Static和Dynamic选项只能选择一个,缺省时为 Static。Static表示编译时指定事件必须存在,系统 要进行返回值类型检查;Dynamic表示编译时指定事 件可以不存在,系统把返回值类型检查推迟到应用 程序运行时进行。 Event是关键字,表示后面的Event Name是个事 件名而不是函数。Para list是事件的参数,有多个 参数时参数之间用逗号分隔。 如果用户事件定义了参数,只能使用上述格式触 发事件,而不能使用函数TriggerEvent()或 PostEvent()。
返回章目录
9.1用户自定义事件在应用中的作用
在下列情况下经常使用用户事件: (1)解决对象与窗口之间的通信问题。用 户事件可以通过参数进行信息传递。 (2)响应特殊操作。这些操作没有相应的 PowerBuilder预定义事件 (3)支持用户通过多种多样的方式完成同 一个功能
返回本节 录
返回本节 录
9.5 用户自定义事件应用实例
为了测试,我们在表中添加几条记录如图9ˉ12 所示
返回本节 录
9.5 用户自定义事件应用实例
运行程序:单击“显示记录”按钮,结果如图 9ˉ13所示
9.1用户自定义事件在应用中的作用
用户事件在许多地方与用户定义函数十分相似,用 户事件运用的灵活程度很大程度上反映出应用程序 的灵活性和适用性。PowerBuilder开始将事件和函 数同化,统称为方法。事件也可以带输入参数,并 有返回值。有时形式上难以区分事件和函数。不过, 函数一般是由用户调用,在编程时就已决定,而事 件除了可以由用户触发外,还可以由系统触发。大 多数的事件,都是由系统触发的。因此,事件比函 数更为灵活,应用范围更广

第二十一讲 深入窗体 利用PB事件实现ENTER代替TAB跳转

第二十一讲 深入窗体 利用PB事件实现ENTER代替TAB跳转

利用PB事件实现ENTER代替TAB跳转在前面几讲,我们已经简单探讨了PB的窗口画笔和数据窗口画笔。

从这一讲起,我们将深入理解窗口,进一步和大家体会数据窗口的奥妙,并用例子来说明它。

熟悉Windows编程的人员都知道,Windows的API为程序员提供了大量的消息,约有200多个。

在PowerBuilder中,系统将每个Windows消息作为事件传递给程序员处理,并且为大多数普通的事件提供了缺省处理。

PowerBuilder在语句描绘器中给每一个标准的控件设定了一些常用事件,一般的编程人员基于这些事件就基本可以完成常见的操作。

但是现在我们还是要如何自定义一个新的事件,并将这个新的事件与WINDOWS消息对应起来,用于完成一个特殊的操作。

这就是我这一讲要讲的例子:利用PB事件实现ENTER 代替TAB跳转[插入video_22]建立一个新的Application对象。

作一个Datawindow,采用外部数据源,并且用FreeFrom格式。

加入五个数据字段,存储为d_input。

新建一个窗口,并在Window对象中加入控件。

加入一个CommandButton,命名为cb_add,设置它的text为“&A增加”。

在它的Clicked 事件中添加程序:dw_input.reset()dw_input.insertrow(0)dw_input.setcolumn(1)dw_input.setrow(1)dw_input.setfocus()再增加一个CommandButton,命名为cb_exit,设置它的text为“&X退出”。

在它的Clicked 事件中添加程序:close(parent)增加一个用户自定义事件,打开cb_exit的Script,点击Declare菜单中的User Events,定义一个自定义事件起名为ue_dwnkey,选择Windows的消息ID为pbm_dwnkey。

PB事件和自定义事件讲解

PB事件和自定义事件讲解

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 当清除或关闭窗口时触发。

PB14第14章用户自定义对象(精)

PB14第14章用户自定义对象(精)
选好标准对象类型后, 将打开用户对象画板。 该界面和创建窗口的 界面相似。在这里可 以设置 CommandButton的属 性如Text、字体、控 件大小等作为该用户 对象的默认值,还可 以定义用户函数和用 户事件,并给某些事 件编写代码。
图14-3 定义可视用户对象
14.1.1 创建标准可视用户对象
14.1.2 使用可视用户对象
可视用户对象定义 好后 , 就可以象标准 控件那样使用。在 窗口打开后,点击 工具栏上的控件工 具箱中的用户对象 User Object 图标按 钮。
用户对象
图14-5 控件工具箱
14.1.2 使用可视用户对象
将出现标题为“Select Object”的窗口,在其 中列出了当前pbl文件 中所有的用户对象,选 择一个用户对象,点击 OK按钮或直接双击所 选的用户对象。这里选 u_commandbutton。 调整用户对象在窗口中 的位置、大小,并设置 必要的属性。这样,当 焦点落在该控件上时, 按回车键将触发Click事 件。
给该用户对象定义一个用户事件以响应用户的回车键操作。用户 事件名为“ue_enter”,事件号选“pbm_keydown”。
14-4 在用户对象中定义用户事件
14.1.1 创建标准可视用户对象
在该事件中输入代码: if KeyDown(KeyEnter!) then //如果是回车键,则触发鼠标单击事件 this.TriggerEvent(Clicked!) end if 保存该用户对象,名为u_commandbutton。 定义了一个可视用户对象u_commandbutton,该对象除具备标准 的CommandButton命令按钮的属性、事件、函数外,还有用户自 定义事件ue_keyenter,当焦点落在该控件上时,用户按回车键将 触发该事件。

PB自定义事件

PB自定义事件

pb中用户自定义事件内容Event ID 含义 内容浅析 单选或多选按钮消息前缀:pbm_bm pbm_bmgetcheck 单选按钮或多选按钮是否被选 pbm_bmgetstate 按钮是否加亮 pbm_bmsetcheck 将无线按钮或确认框的选中状态改为未选中状态,反之亦然 pbm_bmsetstate 加亮或不加亮按钮 pbm_bmchange 改变按钮的风格,例如,改为单选按钮或组合框 单选或多选按钮通知消息前缀:pbm_bn pbm_bnclicked 按钮控件被点中 pbm_bndisable 使按钮控件无效 pbm_bndoubleclicked 按钮控件被双点 pbm_bndragdrop 一个对象被放到按钮控件 pbm_bndragenter 一个对象被拖到按钮控件 pbm_bndragleave 一个对象被拖离按钮控件 pbm_bndragover 一个对象被拖经按钮控件 pbm_bnhilite 按钮控件被加亮 pbm_bnpaint 按钮控件被绘制 pbm_bnsetfocus 按钮控件获得聚焦 pbm_bnunhilite 按钮控件不被加亮 通用对话框消息前缀:pbm_cb pbm_cbaddstring 将字符串加到通用对话框 pbm_cbdeletestring 从通用对话框删除一个字符串 pbm_cbdir 加一个目录列表到通用对话框 pbm_cbfindstring 搜索以一组字符开头的字符串 pbm_cbfindstringexact 搜索与所提供的字符完全匹配的字符串 pbm_cbgetcount 列表框中的项数 pbm_cbgetcursel 当前被选项的数目 pbm_cbgetdroppedcontrolset 列表框在屏幕上的坐标位置 pbm_cbgeteditsel 编辑器控件中被选字符的范围 pbm_cbgetextendedui 缺省或扩展的用户界面 pbm_cbgetitemdata 重画的列表框中的4字节(32位)项 pbm_cbgetitemheight 列表框中某一项的高度 pbm_cbgetlbtext 列表框中的文本 pbm_cbgetlbtextlen 列表框中文本的长度 pbm_cbinsertstring 向列表框中增加新的字符串或4字节项 pbm_cblimittext 限制能被输入到列表框中的字符数 pbm_cbresetcontent 删除列表框中所有元素 pbm_cbselectstring 搜索匹配的字符串并显示 pbm_cbsetcursel 在列表框中选择并显示一项 pbm_cbseteditsel 在列表框的编辑区域中选择一块文本 pbm_cbsetextendedui 设置缺省或扩展的用户界面 pbm_cbsetitemdata 在列表框中设定4字节(32位)项 pbm_cbsetitemheight 设置列表框中项的高度 pbm_cbshowdropdown 转换(显示或隐藏)列表框中拖放区域 通用对话框通知消息前缀:pbm_cbn pbm_cbndblclk 用户在列表中某一项上双点 pbm_cbndragdrop 一个对象被放到通用对话框控件上 pbm_cbndragenter 一个对象被拖到通用对话框控件上 pbm_cbndragleave 一个对象被拖离通用对话框控件 pbm_cbndragover 一个对象被拖经通用对话框控件 pbm_cbndropdown 列表框的下放区域即将被显示 pbm_cbneditchange 编辑器控件中的文本发生变化 pbm_cbneditupdate 列表框编辑器控件中的文本即将被改变 pbm_cbnerrspace 列表框满,不能再向其中加入项 pbm_cbnkillfocus 通用列表框失去聚焦 pbm_cbnselchange 列表框中被选文本被改变 pbm_cbnselendcancel 用户按下了"取消"按钮 pbm_cbnselendok 用户按下了"确认"按钮 pbm_cbnsetfocus 通用对话控件拥有聚焦 数据窗口消息前缀:pbm_dw pbm_dwclosedropdown 关闭下拉式数据窗口 pbm_dwscrollend 在数据窗口中卷滚到最后一行 pbm_dwscrollhome 在数据窗口中卷滚到第一行 pbm_dwscrolllineend 卷滚到当前行的行尾(水平方向) pbm_dwscrolllinehome 卷滚到当前行的行首(水平方向) 数据窗口通知消息前缀:pbm_dwn pbm_dwnbacktabout 即将通过Shift+Tab组合键离开该控件 pbm_dwnchanging 控件即将被改变 pbm_dwndropdown 下拉式列表框的下拉部分即将可见 pbm_dwngraphcreate 即将创建图形 pbm_dwnitemchangefocus 数据窗口控件中当前项的聚焦改变 pbm_dwnitemvalidationerror 对当前项的修改引起了一个合法性检查错误 pbm_dwnkey 有键被按下使用KeyDown()处理键盘值 pbm_dwnlbuttondown 鼠标左键被按下 pbm_dwnlbuttonup 鼠标左键被松开 pbm_dwnmbuttonclk 鼠标中键点击 pbm_dwnmbuttondbclk 鼠标中键双击 pbm_dwnmousemove 鼠标移动 pbm_dwnprintmarginchange 打印边界被改变 pbm_dwnprocessenter 回车键被按下 pbm_dwnrowchange 数据窗口中聚焦从一行转向另一行 pbm_dwntabdownout 用户在数据窗口最后一行按了下箭头键 pbm_dwntabout 用户在数据窗口的最后一行/列中按了tab键 pbm_dwntabupout 用户在数据窗口第一行中按了上箭头键 动态数据交换(DDE)消息前缀:pbm_dde pbm_ddeddeack 收到一个DDE消息 pbm_ddeddeinitiate 开始一个DDE会话 pbm_ddeddeterminate 终止一个DDE会话 编辑器控件消息前缀:pbm_em pbm_emcanundo 编辑器控件是否能撤消上一次修改 pbm_ememptyundobuffer 清空由Windows管理的取消操作的缓冲区 pbm_emfmtlines 在多行编辑器控件的行尾增加或删除回车换行 pbm_emgetfirstvisibleline 返回编辑器控件中可见的第一行的行号 pbm_emgethandle 获得编辑器控件使用的内存句柄 pbm_emgetline 从编辑器控件中复制一行到内存中的一个缓冲区 pbm_emgetlinecount 返回多行编辑器控件的行数 pbm_emgetmodify 文本是否被用户修改 pbm_emgetrect 返回控件的长方形域 pbm_emgetsel 返回被选文本的起始位置 pbm_emlimittext 限制用户键入的文本长度 pbm_emlinefromchar 返回被选文本的行号 pbm_emlineindex 返回编辑器控件中被选行第一个字符在编辑串中的位置 pbm_emlinelength 返回编辑器控件中被选行中的字符数 pbm_emlinescroll 水平或垂直卷滚编辑器控件 pbm_emreplacesel 从剪贴板或从键盘上用新文本替换被选文本 pbm_emsethandle 设置编辑器控件的句柄指向内存中的一个缓冲区 pbm_emsetmodify 设置编辑器控件的modified标志 pbm_emsetpasswordchar 设置用户输入任何文本时显示的字符,在输入密码时的显示 pbm_emsetrect 设置/重置编辑器控件所在的长方形区域,编辑器控件中的文本被重画 pbm_emsetrectnp 除了不重画文本,大致与setrect相同 pbm_emsetsel 选择字符 pbm_emsettabstops 在多行编辑器控件中设置tabstops pbm_emsetwordbreak 设置新的词拆分函数 pbm_emsetwordbreakproc 设置新的词拆分过程 pbm_emundo 撤消最近的编辑操作 编辑控件通知消息前缀:pbm_en pbm_enchange 编辑器控件中的文本发生改变 pbm_enerrspace 编辑器控件内存缓冲区溢出 pbm_enhscroll 用户点中上水平卷滚条 pbm_enmaxtext 用户试图输入比允许更多的文本 pbm_enupdate 编辑器控件即将显示用户的修改 pbm_envscroll 用户点中了垂直卷滚条 列表框消息(前缀:pbm_lb) pbm_lbaddstring 向列表框控件中增加一项或一个字符串 pbm_lbdeletestring 从列表框中删除一项或一个字符串 pbm_lbdir 用目录列表填充列表框 pbm_lbfindstring 在列表框中搜索与所给字符串部分匹配的第一项 pbm_lbfindstringexact 在列表框中搜索与所给字符串精确匹配的第一项 pbm_lbgetcaretindex 在列表框中搜索拥有聚焦的项 pbm_lbgetcount 确定列表框中的项数 pbm_lbgetcursel 确定所选项是第几项 pbm_lbgethorizontalextent 获得列表框的宽度计算水平卷滚 pbm_lbgetitemheight 确定列表框控件中项的高度 pbm_lbgetitemrect 确定列表框的尺寸 pbm_lbgetsel 获得列表框中当前所选的项 pbm_lbgetselcount 在多选列表框中获得所选项的数目 pbm_lbgetselitems 用列表框中表框各自的项号填充一个给定的整数数组 pbm_lbgettext 获得列表框中当前所选项的文本 pbm_lbgettextlen 获得列表框中当前所选项的文本中的字符数 pbm_lbgettopindex 确定列表框中可见的最上面一项的项号 pbm_lbinsertstring 向列表框中加入一个新字符串 pbm_lbresetcontent 重置(消除)列表框中的内容 pbm_lbselectstring 搜索并加亮与所给字符匹配的字符串 pbm_lbselitemrange 选择/取消列表框中某一范围中的项 pbm_lbsetcaretindex 设置列表框中的某一项拥有聚焦 pbm_lbsetcolumnwidth 设置列表框中列的宽度 pbm_lbsetcursel 在列表框中选择并加亮一项;如果需要,卷滚到列表框 pbm_lbsethorizontaltext 设置列表框中被水平卷滚的单元数 pbm_lbsetitemdata 设置与列表框相关的32位/4字节值 pbm_lbsetitemheight 设置列表框中项的高度 pbm_lbsetsel 在列表框中选择一个字符串 pbm_lbsettabstops 设置列表框控件中tabstops的位置 pbm_lbsettopindex 卷滚列表框使特定的项成为可见的最上面一项 列表框通知消息前缀:pbm_en pbm_endblclk 用户在列表框控件中的某一项上双击 pbm_enerrspace 用户试图超越可在列表框中输入字符的最大限制 pbm_enselcancel 当前选取文本被取消 pbm_enselchange 用户在列表框中选择或取消了一项 窗口消息前缀:pbm_ pbm_activateapp 被激活的窗口属于另外一个应用 pbm_askcbformatname 要求剪贴板中的内容被复制到一个使用自定义格式的文本缓冲区中 pbm_char 传送键盘上按下的键 pbm_chartoitem 通过转换键盘来的字符,帮助列表框定位其中的项 pbm_childactivate 一个子窗口被移动或激活 pbm_clear 用户要删除当前编辑器控件中的内容 pbm_command 用户选择了一个菜单项控件,或使用了加速键 pbm_compacting 系统内存资源不足;当Windows占用了多于1/8的CPU时间紧缩内存时,产生这条消息 pbm_compareitem 当新的一项被加入列表框或组合框时产生此消息,Window用这条消息进行项之间的比较 pbm_ctlcolor 一个控件即将被画出,可在此时改变控件的颜色 pbm_deadchar 用户选择了一种非英语字符集或其它特殊字符集,这将改变下面将要输入的字符 pbm_deleteitem 从列表框或通用对话框中移去一项 pbm_destroyclipboard 剪贴板内容被清除 pbm_devmodechanged WIN.INI中的一个设备名被修改 pbm_drawclipboard 剪贴板内容发生改变 pbm_drawitem 列表框或通用对话框的一项内容被改变 pbm_dropfiles 当鼠标左键在一个注册为拖放文件接受器的应用上释放时,发出该消息 pbm_erasebkgnd 窗口的客户区需要重画 pbm_fontchange 应用可用的字体数改变 pbm_getdlgcode 通知消息,说明当前使用哪种类型的键盘 pbm_getfont 获取当前激活的字体 pbm_getminmaxinto Windows正在检查最小化或最大化窗口的尺寸 pbm_gettext 从一个控件(如按钮或编辑器控件)中复制文本到一个内存缓冲区 pbm_gettextlength 用来确定一个控件中的字符数 pbm_hscrollclipboard 剪贴板的水平卷滚条被使用 pbm_iconerasebkgnd 一个最小化窗口需要重化背景 pbm_initdialog 一个对话框即将被显示 pbm_initmenu 一个菜单即将被显示 pbm_initmenupopup 一个弹出式窗口即将被显示 pbm_keydown 键盘上的一个键被按下 pbm_keyup 键盘上的一个键被释放 pbm_mdiactive 一个MDI子窗口(表单)被激活 pbm_mdicascade 以重叠的形式重排所有的表单 pbm_mdicreate 创建一个表单 pbm_mdidestroy 从MDI框架中移去一个表单 pbm_mdigetactive 获得当前活动的MDI表单的句柄 pbm_mdiiconrange 在一个MDI框架中重排最小化表单的图标 pbm_mdimaximize 最大化一个MDI子表单 pbm_mdinext 激活下一个MDI表单(紧接着活动表单的表单) pbm_mdirestore 把MDI表单恢复到它原来的大小 pbm_mdisetmenu 将一个菜单与一个MDI表单联系起来 pbm_mdifitle 平铺所有的MDI表单 pbm_measureitem 这个消息被送给即将创建的内有按钮或其它控件的窗口 pbm_menuchar 用户使用了一个快捷键,但系统不支持该快捷键 pbm_menuselect 用户选择了一个菜单项 pbm_mouseactivate 用户在一个非活动窗口中点击了鼠标 pbm_mousemove 用户移动了鼠标 pbm_ncactivate 窗口的非客户区即将被激活 pbm_nccalcsize 窗口的尺寸需要重新计算 pbm_nccreate 窗口即将创建它的非客户区 pbm_ncdestroy 窗口的非共享区被析构 pbm_nchittest 每次非客户区被移动时都发送该消息 pbm_nclbuttondblclk 用户在非客户区双点了鼠标左键 pbm_ncpaint 非客户需要画出 pbm_nextdlgctl 在对话框中将聚焦转给另一个控件 pbm_paint 窗口的客户区需要被画出 pbm_paintclipboard 剪贴板应用有剪贴操作,剪贴板查看器需重画 pbm_palettechanged 系统调色板被改变 pbm_paletteischanging 系统调色板即将被改变 pbm_parentnotify 通知父窗口一个子窗口即将被创建 pbm_querydragicon 用户要拖一个最小化窗口 pbm_queryendsession 通知消息,说明窗口即将被关闭 pbm_querynewpalette 应用即将收到输入聚焦,应该执行必要的颜色调整 pbm_queryopen 一个最小化窗口即将被恢复 pbm_quit 应用处理的最后一个消息 pbm_renderallformats 通知一个剪贴板格式的拥有者,应用将失去所有的格式 pbm_renderformats 通知消息,说明放在剪贴板中的数据应该用一种特殊格式传送 pbm_setcursor 通知消息,说明鼠标指针在一个窗口中移动 pbm_setfont 用来在对话框中改变字体 pbm_setredraw 在加一个新项之前发送给列表框或通用对话框 pbm_settext 用来改变窗口的标题或文本 pbm_sizeclipboard 剪贴板查看器应用改变尺寸 pbm_spoolerstatus 一个打印管理器任务被添加或删除 pbm_syschar <ALT>键和其它某键同时被按下 pbm_syscolorchange 一种或多种系统颜色被改变 pbm_syscommand 用户选择了一个系统菜单命令 pbm_sysdeadchar 通知消息说明一种非英语字符集被选定 pbm_syskeydown 用户按下某键的同时按下了<ALT>键 pbm_syskeyup 用户释放了<ALT>组合键 pbm_timechange 系统时钟被修改 pbm_undo 从undo缓冲区复制文本到编辑器控件 pbm_vkeytoitem 当一个列表框拥有聚焦时,用户按下了一个键 pbm_vscroll 用户点击了垂直卷滚条 pbm_vscrollclipboard 剪贴板查看器的垂直卷滚条被点击 pbm_windowposchanged 窗口位置发生改变 pbm_windowposchanging 窗口位置即将发生改变 pbm_wininichange WIN.INI文件被修改 。

PB-Event事件说明

PB-Event事件说明
动态数据交换(DDE)消息(前缀:pbm_dde)
pbm_ddeddeack 收到一个DDE消息。
pbm_ddeddeinitiate 开始一个DDE会话。
pbm_ddeddeterminate 终止一个DDE会话。
编辑器控件消息(前缀:pbm_em)
pbm_emcanundo 编辑器控件是否能撤消上一次修改。
pbm_lbsetitemdata 设置与列表框相关的32位/4字节值。
pbm_lbsetitemheight 设置列表框中项的高度。
pbm_lbsetsel 在列表框中选择一个字符串。
pbm_lbsettabstops 设置列表框控件中tabstops的位置。
pbm_lbsettopindex 卷滚列表框使特定的项成为可见的最上面一项。
pbm_cbgetextendedui 缺省或扩展的用户界面。
pbm_cbgetitemdata 重画的列表框中的4字节(32位)项。
pbm_cbgetitemheight 列表框中某一项的高度。
pbm_cbgetlbtext 列表框中的文本。
pbm_cbgetlbtextlen 列表框中文本的长度。
pbm_lbgettopindex 确定列表框中可见的最上面一项的项号。
pbm_lbinsertstring 向列表框中加入一个新字符串。
pbm_lbresetcontent 重置(消除)列表框中的内容。
pbm_lbselectstring 搜索并加亮与所给字符匹配的字符串。
pbm_lbselitemrange 选择/取消列表框中某一范围中的项。
pbm_lbdir 用目录列表填充列表框。
pbm_lbfindstring 在列表框中搜索与所给字符串部分匹配的第一项。

PB中自定义事件ID含义

PB中自定义事件ID含义

PB中自定義事件ID含義单选或多选按钮消息(前缀:pbm_bm)pbm_bmgetcheck 单选按钮或多选按钮是否被选。

pbm_bmgetstate 按钮是否加亮。

pbm_bmsetcheck 将无线按钮或确认框的选中状态改为未选中状态,反之亦然。

pbm_bmsetstate 加亮或不加亮按钮。

pbm_bmchange 改变按钮的风格,例如,改为单选按钮或组合框。

单选或多选按钮通知消息(前缀:pbm_bn)pbm_bnclicked 按钮控件被点中。

pbm_bndisable 使按钮控件无效。

pbm_bndoubleclicked 按钮控件被双点。

pbm_bndragdrop 一个对象被放到按钮控件。

pbm_bndragenter 一个对象被拖到按钮控件。

pbm_bndragleave 一个对象被拖离按钮控件。

pbm_bndragover 一个对象被拖经按钮控件。

pbm_bnhilite 按钮控件被加亮。

pbm_bnpaint 按钮控件被绘制。

pbm_bnsetfocus 按钮控件获得聚焦。

pbm_bnunhilite 按钮控件不被加亮。

通用对话框消息(前缀:pbm_cb)pbm_cbaddstring 将字符串加到通用对话框。

pbm_cbdeletestring 从通用对话框删除一个字符串。

pbm_cbdir 加一个目录列表到通用对话框。

pbm_cbfindstring 搜索以一组字符开头的字符串。

pbm_cbfindstringexact 搜索与所提供的字符完全匹配的字符串。

pbm_cbgetcount 列表框中的项数。

pbm_cbgetcursel 当前被选项的数目。

pbm_cbgetdroppedcontrolset 列表框在屏幕上的坐标位置。

pbm_cbgeteditsel 编辑器控件中被选字符的范围。

pbm_cbgetextendedui 缺省或扩展的用户界面。

pbm_cbgetitemdata 重画的列表框中的4字节(32位)项。

PB事件大全

PB事件大全

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 当清除或关闭窗口时触发。

PB常用代码

PB常用代码

pb 常用的一些代码窗口的open 事件或者【浏览】和【查询】按钮的click 事件dw_1.settransobject(sqlca)//指定事务对象dw_1.retrieve()//检索数据【添加】按钮的click 事件dw_1.insertrow(0)dw_1.setfocus()dw_1.scrolltorow(dw_1.rowcount())if dw_1.updata()=1 thenmessagebox("提示","保存成功!")cb_1.enabled=truecb_3.enabled=falseeslemessagebox("提示","保存失败,请核实!")end ifdw_1.setcolumn(1)//将第一列设置为当前列cb_1.enabled=falsecb_3.enabled=true//cb_3 为保存控件【保存】按钮的click 事件if dw_1.update()=1 thenmessagebox("提示","保存成功!")cb_1.enabled=truecb_3.enabled=falseelsemessagebox("提示","保存失败,请核实!")end if【删除】按钮的click 事件if dw_1.deleterow(0) then//其中0 表示删除当前行if dw_1.update()=1 thenmessagebox("提示","删除成功!")elsemessagebox("提示","删除失败!")end ifelsemessagebox("提示","删除失败")end if【退出】按钮click 事件close(parent)【上一条】按钮的click 事件dw_1.scrollpriorrow()dw_1.selectrow(0,false)//0 表示选取或者取消所有行,dw_1.selectrow(1,true)//第一行高亮显示dw_1.selectrow(dw_1.getrow(),true)【下一条】按钮的click 事件dw_1.scrollnextrow()dw_1.selctrow(0,false)dw_1.selectrow(dw_1.getrow(),true)【升序】按钮的click 事件本例按商品编号升序排列dw_1.setransobject(sqlca)dw_1.setsort("商品编号A")//setsort 函数用来定义数据窗口如何排序,sort()函数则实际对数据窗口进行排序。

PB简介

PB简介

第1章PowerBuilder简介技术的不断推陈出新,使得当今的商业市场正在以前所未有的速度变化着。

随着Internet和浏览器技术的成熟与普及,形成了一种简便、低成本的信息传播手段,该手段正在改变着传统的产品销售方式和服务方式。

作为能够适应企业全部需求的解决方案,首先应该能够支持Client/Server结构,并且能够把它扩展成为包括HTML和Java的分布式体系结构。

PowerBuilder正是符合该趋势的一种分布式数据库前端开发工具,通过其图形界面可以快速简捷地开发出面向对象的数据库应用程序。

通过其引入的独具特色的数据窗口对象,程序员可以可视化地完成对数据库的操作。

PowerBuilder提供了对目前流行的绝大多数大型数据库和桌面数据库的支持,同时也附带了一个小型的数据库管理系统Sybase SQL Anywhere。

PowerBuilder支持多种软硬件平台,它不仅可以跨平台共享程序中的各种对象,还支持应用程序的跨平台开发和部署,从而可以极大地减轻程序员在不同平台上移植程序的工作量。

1.1 PowerBuilder概述我们知道,数据库应用是当前计算机应用的一个非常重要的方面,而在目前的数据库应用技术中普遍采用的就是客户机/服务器体系结构。

在这种体系结构中,所有的数据和数据库管理系统都在服务器上,客户机通过采用标准的SQL语句等方式来访问服务器上数据库中的数据。

由于这种体系结构把数据和对数据的管理都统一放在了服务器上,因此保证了数据的安全性和完整性,同时也可以充分利用服务器高性能的特点。

正是客户机/服务器体系结构的这些优点,使其得到了非常广泛的应用。

PowerBuilder是著名的数据库应用开发工具生产厂商PowerSoft公司推出的产品(PowerSoft现已被数据库厂商Sybase收购),它完全按照客户机/服务器体系结构研制设计。

在客户机/服务器结构中,它使用在客户机中,作为数据库应用程序的开发工具而存在。

PB数据库教程

PB数据库教程

总复习一、使用PB开发数据库的基本步骤1、建立数据库主要步骤:(1)建立数据库(2)建立表结构(3)建立主键、外键和索引(4)输入数据2、建立应用程序对象主要步骤:(1)建立工作空间(2)建立目标文件、库文件和应用程序对象` (3)处理应用程序对象的事件●在应用程序对象的open事件中建立与数据库的连接●在应用程序对象的open事件中调用主窗口(或登录窗口),如果尚未建立窗口,可以暂时空缺●在应用程序对象的close事件中断开与数据库的连接3、建立登录窗口主要步骤:(1)创建窗口(2)在窗口上建立静态文本框(3)建立用于输入账号的单行编辑框(4)建立用于输入密码的单行编辑框(5)在单行编辑框中自定义事件,用于支持回车键(6)在窗口上建立确认、退出按钮(7)编写自定义事件中的脚本(8)编写确认、退出按钮中的脚本4、建立主窗口和主菜单主要步骤:(1)建立主菜单●建立菜单项●建立工具条●建立快捷方式●编写退出脚本(2)建立主窗口●建立MDI窗口●设置窗口标题和状态参数●连接主菜单和主窗口5、应用窗口(1)增删改窗口◆创建窗口◆建立数据窗口对象◆在窗口上建立数据窗口控件◆连接数据窗口对象和数据窗口控件◆在窗口上建立增加、删除、提交、退出按钮◆编写open事件脚本(2)检索窗口◆创建窗口◆建立数据窗口对象◆在窗口上建立数据窗口控件◆连接数据窗口对象和数据窗口控件◆在窗口上建立检索条件控件,建立检索、退出按钮◆编写open事件脚本◆编写各按钮中clicked!事件脚本(3)统计窗口◆创建窗口◆建立数据窗口对象(包括各种统计图形)◆在窗口上建立数据窗口控件◆连接数据窗口对象和数据窗口控件◆编写open事件脚本(4)打印窗口◆创建窗口◆建立数据窗口对象◆在窗口上建立数据窗口控件◆连接数据窗口对象和数据窗口控件◆在窗口上建立打印、退出按钮◆编写open事件脚本◆编写各按钮中clicked!事件脚本二、应用举例题目背景:一个简化的学生成绩管理子系统由两个表组成,一个表叫成绩单表, 用来记录学生的考试成绩;另一个表叫学生表, 用来描述学生的基本信息。

PB事件和自定义事件

PB事件和自定义事件

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 当清除或关闭窗口时触发。

pb tab内数据窗口自动调整大小

pb tab内数据窗口自动调整大小
2、窗口resize事件调整tab_1的大小为窗口大小
3、当tab_1改变大小触发tab_1的自定义risize事件,自动将tab、各tabpage内的所有数据窗口控件大小调整为tab的大小
pb 自动将tab中数据窗ab中自定义事件,事件名称可自行定义,如resize,定义事件时把event id 设置为pbm_size,该事件在tab大小变化时触发,该事件脚本如下:
long ll1,ll2
window ldw
for ll1=1 to upperbound(this.control)
ldw.x=0
ldw.y=0
ldw.width=this.width -40
ldw.height=this.height -150
next
next
在放置tab控件的窗口自带resize事件中增加脚本,目的是当窗口改变大小时自动调整tab的大小,脚本如下(将tab大小调整到跟窗口一样大小):
for ll2=1 to upperbound(this.control[ll1].control)
if typeof(this.control[ll1].control[ll2])<>DataWindow! then continue
ldw= this.control[ll1].control[ll2]
tab_1.x=0
tab_1.y=0
tab_1.width=this.workspacewidth()
tab_1.height=this.workspaceheight()
在窗口open事件建立如下脚本
this.postevent("resize")
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

pb中用户自定义事件内容Event ID 含义 内容浅析 单选或多选按钮消息前缀:pbm_bm pbm_bmgetcheck 单选按钮或多选按钮是否被选 pbm_bmgetstate 按钮是否加亮 pbm_bmsetcheck 将无线按钮或确认框的选中状态改为未选中状态,反之亦然 pbm_bmsetstate 加亮或不加亮按钮 pbm_bmchange 改变按钮的风格,例如,改为单选按钮或组合框 单选或多选按钮通知消息前缀:pbm_bn pbm_bnclicked 按钮控件被点中 pbm_bndisable 使按钮控件无效 pbm_bndoubleclicked 按钮控件被双点 pbm_bndragdrop 一个对象被放到按钮控件 pbm_bndragenter 一个对象被拖到按钮控件 pbm_bndragleave 一个对象被拖离按钮控件 pbm_bndragover 一个对象被拖经按钮控件 pbm_bnhilite 按钮控件被加亮 pbm_bnpaint 按钮控件被绘制 pbm_bnsetfocus 按钮控件获得聚焦 pbm_bnunhilite 按钮控件不被加亮 通用对话框消息前缀:pbm_cb pbm_cbaddstring 将字符串加到通用对话框 pbm_cbdeletestring 从通用对话框删除一个字符串 pbm_cbdir 加一个目录列表到通用对话框 pbm_cbfindstring 搜索以一组字符开头的字符串 pbm_cbfindstringexact 搜索与所提供的字符完全匹配的字符串 pbm_cbgetcount 列表框中的项数 pbm_cbgetcursel 当前被选项的数目 pbm_cbgetdroppedcontrolset 列表框在屏幕上的坐标位置 pbm_cbgeteditsel 编辑器控件中被选字符的范围 pbm_cbgetextendedui 缺省或扩展的用户界面 pbm_cbgetitemdata 重画的列表框中的4字节(32位)项 pbm_cbgetitemheight 列表框中某一项的高度 pbm_cbgetlbtext 列表框中的文本 pbm_cbgetlbtextlen 列表框中文本的长度 pbm_cbinsertstring 向列表框中增加新的字符串或4字节项 pbm_cblimittext 限制能被输入到列表框中的字符数 pbm_cbresetcontent 删除列表框中所有元素 pbm_cbselectstring 搜索匹配的字符串并显示 pbm_cbsetcursel 在列表框中选择并显示一项 pbm_cbseteditsel 在列表框的编辑区域中选择一块文本 pbm_cbsetextendedui 设置缺省或扩展的用户界面 pbm_cbsetitemdata 在列表框中设定4字节(32位)项 pbm_cbsetitemheight 设置列表框中项的高度 pbm_cbshowdropdown 转换(显示或隐藏)列表框中拖放区域 通用对话框通知消息前缀:pbm_cbn pbm_cbndblclk 用户在列表中某一项上双点 pbm_cbndragdrop 一个对象被放到通用对话框控件上 pbm_cbndragenter 一个对象被拖到通用对话框控件上 pbm_cbndragleave 一个对象被拖离通用对话框控件 pbm_cbndragover 一个对象被拖经通用对话框控件 pbm_cbndropdown 列表框的下放区域即将被显示 pbm_cbneditchange 编辑器控件中的文本发生变化 pbm_cbneditupdate 列表框编辑器控件中的文本即将被改变 pbm_cbnerrspace 列表框满,不能再向其中加入项 pbm_cbnkillfocus 通用列表框失去聚焦 pbm_cbnselchange 列表框中被选文本被改变 pbm_cbnselendcancel 用户按下了"取消"按钮 pbm_cbnselendok 用户按下了"确认"按钮 pbm_cbnsetfocus 通用对话控件拥有聚焦 数据窗口消息前缀:pbm_dw pbm_dwclosedropdown 关闭下拉式数据窗口 pbm_dwscrollend 在数据窗口中卷滚到最后一行 pbm_dwscrollhome 在数据窗口中卷滚到第一行 pbm_dwscrolllineend 卷滚到当前行的行尾(水平方向) pbm_dwscrolllinehome 卷滚到当前行的行首(水平方向) 数据窗口通知消息前缀:pbm_dwn pbm_dwnbacktabout 即将通过Shift+Tab组合键离开该控件 pbm_dwnchanging 控件即将被改变 pbm_dwndropdown 下拉式列表框的下拉部分即将可见 pbm_dwngraphcreate 即将创建图形 pbm_dwnitemchangefocus 数据窗口控件中当前项的聚焦改变 pbm_dwnitemvalidationerror 对当前项的修改引起了一个合法性检查错误 pbm_dwnkey 有键被按下使用KeyDown()处理键盘值 pbm_dwnlbuttondown 鼠标左键被按下 pbm_dwnlbuttonup 鼠标左键被松开 pbm_dwnmbuttonclk 鼠标中键点击 pbm_dwnmbuttondbclk 鼠标中键双击 pbm_dwnmousemove 鼠标移动 pbm_dwnprintmarginchange 打印边界被改变 pbm_dwnprocessenter 回车键被按下 pbm_dwnrowchange 数据窗口中聚焦从一行转向另一行 pbm_dwntabdownout 用户在数据窗口最后一行按了下箭头键 pbm_dwntabout 用户在数据窗口的最后一行/列中按了tab键 pbm_dwntabupout 用户在数据窗口第一行中按了上箭头键 动态数据交换(DDE)消息前缀:pbm_dde pbm_ddeddeack 收到一个DDE消息 pbm_ddeddeinitiate 开始一个DDE会话 pbm_ddeddeterminate 终止一个DDE会话 编辑器控件消息前缀:pbm_em pbm_emcanundo 编辑器控件是否能撤消上一次修改 pbm_ememptyundobuffer 清空由Windows管理的取消操作的缓冲区 pbm_emfmtlines 在多行编辑器控件的行尾增加或删除回车换行 pbm_emgetfirstvisibleline 返回编辑器控件中可见的第一行的行号 pbm_emgethandle 获得编辑器控件使用的内存句柄 pbm_emgetline 从编辑器控件中复制一行到内存中的一个缓冲区 pbm_emgetlinecount 返回多行编辑器控件的行数 pbm_emgetmodify 文本是否被用户修改 pbm_emgetrect 返回控件的长方形域 pbm_emgetsel 返回被选文本的起始位置 pbm_emlimittext 限制用户键入的文本长度 pbm_emlinefromchar 返回被选文本的行号 pbm_emlineindex 返回编辑器控件中被选行第一个字符在编辑串中的位置 pbm_emlinelength 返回编辑器控件中被选行中的字符数 pbm_emlinescroll 水平或垂直卷滚编辑器控件 pbm_emreplacesel 从剪贴板或从键盘上用新文本替换被选文本 pbm_emsethandle 设置编辑器控件的句柄指向内存中的一个缓冲区 pbm_emsetmodify 设置编辑器控件的modified标志 pbm_emsetpasswordchar 设置用户输入任何文本时显示的字符,在输入密码时的显示 pbm_emsetrect 设置/重置编辑器控件所在的长方形区域,编辑器控件中的文本被重画 pbm_emsetrectnp 除了不重画文本,大致与setrect相同 pbm_emsetsel 选择字符 pbm_emsettabstops 在多行编辑器控件中设置tabstops pbm_emsetwordbreak 设置新的词拆分函数 pbm_emsetwordbreakproc 设置新的词拆分过程 pbm_emundo 撤消最近的编辑操作 编辑控件通知消息前缀:pbm_en pbm_enchange 编辑器控件中的文本发生改变 pbm_enerrspace 编辑器控件内存缓冲区溢出 pbm_enhscroll 用户点中上水平卷滚条 pbm_enmaxtext 用户试图输入比允许更多的文本 pbm_enupdate 编辑器控件即将显示用户的修改 pbm_envscroll 用户点中了垂直卷滚条 列表框消息(前缀:pbm_lb) pbm_lbaddstring 向列表框控件中增加一项或一个字符串 pbm_lbdeletestring 从列表框中删除一项或一个字符串 pbm_lbdir 用目录列表填充列表框 pbm_lbfindstring 在列表框中搜索与所给字符串部分匹配的第一项 pbm_lbfindstringexact 在列表框中搜索与所给字符串精确匹配的第一项 pbm_lbgetcaretindex 在列表框中搜索拥有聚焦的项 pbm_lbgetcount 确定列表框中的项数 pbm_lbgetcursel 确定所选项是第几项 pbm_lbgethorizontalextent 获得列表框的宽度计算水平卷滚 pbm_lbgetitemheight 确定列表框控件中项的高度 pbm_lbgetitemrect 确定列表框的尺寸 pbm_lbgetsel 获得列表框中当前所选的项 pbm_lbgetselcount 在多选列表框中获得所选项的数目 pbm_lbgetselitems 用列表框中表框各自的项号填充一个给定的整数数组 pbm_lbgettext 获得列表框中当前所选项的文本 pbm_lbgettextlen 获得列表框中当前所选项的文本中的字符数 pbm_lbgettopindex 确定列表框中可见的最上面一项的项号 pbm_lbinsertstring 向列表框中加入一个新字符串 pbm_lbresetcontent 重置(消除)列表框中的内容 pbm_lbselectstring 搜索并加亮与所给字符匹配的字符串 pbm_lbselitemrange 选择/取消列表框中某一范围中的项 pbm_lbsetcaretindex 设置列表框中的某一项拥有聚焦 pbm_lbsetcolumnwidth 设置列表框中列的宽度 pbm_lbsetcursel 在列表框中选择并加亮一项;如果需要,卷滚到列表框 pbm_lbsethorizontaltext 设置列表框中被水平卷滚的单元数 pbm_lbsetitemdata 设置与列表框相关的32位/4字节值 pbm_lbsetitemheight 设置列表框中项的高度 pbm_lbsetsel 在列表框中选择一个字符串 pbm_lbsettabstops 设置列表框控件中tabstops的位置 pbm_lbsettopindex 卷滚列表框使特定的项成为可见的最上面一项 列表框通知消息前缀:pbm_en pbm_endblclk 用户在列表框控件中的某一项上双击 pbm_enerrspace 用户试图超越可在列表框中输入字符的最大限制 pbm_enselcancel 当前选取文本被取消 pbm_enselchange 用户在列表框中选择或取消了一项 窗口消息前缀:pbm_ pbm_activateapp 被激活的窗口属于另外一个应用 pbm_askcbformatname 要求剪贴板中的内容被复制到一个使用自定义格式的文本缓冲区中 pbm_char 传送键盘上按下的键 pbm_chartoitem 通过转换键盘来的字符,帮助列表框定位其中的项 pbm_childactivate 一个子窗口被移动或激活 pbm_clear 用户要删除当前编辑器控件中的内容 pbm_command 用户选择了一个菜单项控件,或使用了加速键 pbm_compacting 系统内存资源不足;当Windows占用了多于1/8的CPU时间紧缩内存时,产生这条消息 pbm_compareitem 当新的一项被加入列表框或组合框时产生此消息,Window用这条消息进行项之间的比较 pbm_ctlcolor 一个控件即将被画出,可在此时改变控件的颜色 pbm_deadchar 用户选择了一种非英语字符集或其它特殊字符集,这将改变下面将要输入的字符 pbm_deleteitem 从列表框或通用对话框中移去一项 pbm_destroyclipboard 剪贴板内容被清除 pbm_devmodechanged WIN.INI中的一个设备名被修改 pbm_drawclipboard 剪贴板内容发生改变 pbm_drawitem 列表框或通用对话框的一项内容被改变 pbm_dropfiles 当鼠标左键在一个注册为拖放文件接受器的应用上释放时,发出该消息 pbm_erasebkgnd 窗口的客户区需要重画 pbm_fontchange 应用可用的字体数改变 pbm_getdlgcode 通知消息,说明当前使用哪种类型的键盘 pbm_getfont 获取当前激活的字体 pbm_getminmaxinto Windows正在检查最小化或最大化窗口的尺寸 pbm_gettext 从一个控件(如按钮或编辑器控件)中复制文本到一个内存缓冲区 pbm_gettextlength 用来确定一个控件中的字符数 pbm_hscrollclipboard 剪贴板的水平卷滚条被使用 pbm_iconerasebkgnd 一个最小化窗口需要重化背景 pbm_initdialog 一个对话框即将被显示 pbm_initmenu 一个菜单即将被显示 pbm_initmenupopup 一个弹出式窗口即将被显示 pbm_keydown 键盘上的一个键被按下 pbm_keyup 键盘上的一个键被释放 pbm_mdiactive 一个MDI子窗口(表单)被激活 pbm_mdicascade 以重叠的形式重排所有的表单 pbm_mdicreate 创建一个表单 pbm_mdidestroy 从MDI框架中移去一个表单 pbm_mdigetactive 获得当前活动的MDI表单的句柄 pbm_mdiiconrange 在一个MDI框架中重排最小化表单的图标 pbm_mdimaximize 最大化一个MDI子表单 pbm_mdinext 激活下一个MDI表单(紧接着活动表单的表单) pbm_mdirestore 把MDI表单恢复到它原来的大小 pbm_mdisetmenu 将一个菜单与一个MDI表单联系起来 pbm_mdifitle 平铺所有的MDI表单 pbm_measureitem 这个消息被送给即将创建的内有按钮或其它控件的窗口 pbm_menuchar 用户使用了一个快捷键,但系统不支持该快捷键 pbm_menuselect 用户选择了一个菜单项 pbm_mouseactivate 用户在一个非活动窗口中点击了鼠标 pbm_mousemove 用户移动了鼠标 pbm_ncactivate 窗口的非客户区即将被激活 pbm_nccalcsize 窗口的尺寸需要重新计算 pbm_nccreate 窗口即将创建它的非客户区 pbm_ncdestroy 窗口的非共享区被析构 pbm_nchittest 每次非客户区被移动时都发送该消息 pbm_nclbuttondblclk 用户在非客户区双点了鼠标左键 pbm_ncpaint 非客户需要画出 pbm_nextdlgctl 在对话框中将聚焦转给另一个控件 pbm_paint 窗口的客户区需要被画出 pbm_paintclipboard 剪贴板应用有剪贴操作,剪贴板查看器需重画 pbm_palettechanged 系统调色板被改变 pbm_paletteischanging 系统调色板即将被改变 pbm_parentnotify 通知父窗口一个子窗口即将被创建 pbm_querydragicon 用户要拖一个最小化窗口 pbm_queryendsession 通知消息,说明窗口即将被关闭 pbm_querynewpalette 应用即将收到输入聚焦,应该执行必要的颜色调整 pbm_queryopen 一个最小化窗口即将被恢复 pbm_quit 应用处理的最后一个消息 pbm_renderallformats 通知一个剪贴板格式的拥有者,应用将失去所有的格式 pbm_renderformats 通知消息,说明放在剪贴板中的数据应该用一种特殊格式传送 pbm_setcursor 通知消息,说明鼠标指针在一个窗口中移动 pbm_setfont 用来在对话框中改变字体 pbm_setredraw 在加一个新项之前发送给列表框或通用对话框 pbm_settext 用来改变窗口的标题或文本 pbm_sizeclipboard 剪贴板查看器应用改变尺寸 pbm_spoolerstatus 一个打印管理器任务被添加或删除 pbm_syschar <ALT>键和其它某键同时被按下 pbm_syscolorchange 一种或多种系统颜色被改变 pbm_syscommand 用户选择了一个系统菜单命令 pbm_sysdeadchar 通知消息说明一种非英语字符集被选定 pbm_syskeydown 用户按下某键的同时按下了<ALT>键 pbm_syskeyup 用户释放了<ALT>组合键 pbm_timechange 系统时钟被修改 pbm_undo 从undo缓冲区复制文本到编辑器控件 pbm_vkeytoitem 当一个列表框拥有聚焦时,用户按下了一个键 pbm_vscroll 用户点击了垂直卷滚条 pbm_vscrollclipboard 剪贴板查看器的垂直卷滚条被点击 pbm_windowposchanged 窗口位置发生改变 pbm_windowposchanging 窗口位置即将发生改变 pbm_wininichange WIN.INI文件被修改 。

相关文档
最新文档