散分,自己根据一些资料整理的pb常用事件

阿木已被某人占用 2012-08-17 02:55:30
前一段时间,我还觉得pb就dw和pfc,事件和函数这几个重要,
经过一段时间的学习,发现不是那么一回事,或许现在我对pb的认知也很片面。
我现在觉得dw和api,事件和函数是最重要的了。
或许将来我会觉得web也很重要,嘿嘿......
pfc虽好,但是别人的东西,会约束自己的开发思维,什么不爽。
等我什么把他变成的自己的东西,它就很重要了。
上一次发了个函数篇,这次来个事件篇,
正好这几日没什么任务,就把他整理出来。
欢迎大家指出不当之处。



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 dwo.name
case 'cb_name'
//动作......
case .......
end choose

03.数据窗口检索前后触发的事件
RetrieveStart 当数据窗口检索将要开始时触发
RetrieveEnd 当数据窗口的检索完成时触发
RetrieveRow 在一行数据被检索出来之后触发
在RetrieveStart事件中设置了行为/返回代码2,在检索数据之前不要重置行,也就是上次retrieve的数据会被保留下来

04.打印前后
PrintStart 当数据窗口打印开始时触发
PrintEnd 当数据窗口打印结束时触发
PrintPage 在数据窗口的每一页设置打印格式之前触发

05.其它的我自己不常用,就不多说了


...全文
5918 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
moon0080525 2015-01-22
  • 打赏
  • 举报
回复
真心感谢楼主 让我们程序员少走了许多弯路 在编程过程中进行更好的查找 真心赞啊!!!!!!!
budy_liu 2013-12-12
  • 打赏
  • 举报
回复
顶楼主,这个好,mark
lz_qxx 2013-11-05
  • 打赏
  • 举报
回复
怒顶
测了 2013-04-11
  • 打赏
  • 举报
回复
好!看看、,不错
深圳Tony 2013-04-09
  • 打赏
  • 举报
回复
辛苦啊,发表的这位pb前辈
wh200804070123 2012-11-05
  • 打赏
  • 举报
回复
感謝樓主辛勤整理,我打印出來,發給部門同事一起學習了. 本人學習PB一年,學習到這內容,可以說又少走了很多彎路.
season1688 2012-10-14
  • 打赏
  • 举报
回复
人才啊~~·
hezhanyan 2012-10-01
  • 打赏
  • 举报
回复
支持分享
Eetze 2012-08-20
  • 打赏
  • 举报
回复
辛苦了 谢谢分享
DYFDWX 2012-08-20
  • 打赏
  • 举报
回复
顶,楼主辛苦了
baiynije 2012-08-20
  • 打赏
  • 举报
回复
支持分享!!!!
yujh518 2012-08-20
  • 打赏
  • 举报
回复
辛苦辛苦 保存一下,留着学习。
sjlion 2012-08-20
  • 打赏
  • 举报
回复
辛苦辛苦
zhangyangziwo 2012-08-19
  • 打赏
  • 举报
回复
感谢楼主细心整理,共享
sybasebbs 2012-08-19
  • 打赏
  • 举报
回复
非常好,转一下,没问题吧

http://www.sybasebbs.com/forum.php?mod=viewthread&tid=5411&extra=
WorldMobile 2012-08-18
  • 打赏
  • 举报
回复
楼主辛苦了,支持
sunfor 2012-08-18
  • 打赏
  • 举报
回复
好详细啊。。。UP
wag_enu 2012-08-18
  • 打赏
  • 举报
回复
楼主辛苦了。。。
w_wangbin 2012-08-18
  • 打赏
  • 举报
回复
厉害,佩服啊
fuxiaoyang13 2012-08-18
  • 打赏
  • 举报
回复
支持支持!!
加载更多回复(3)

604

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 控件与界面
社区管理员
  • 控件与界面社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧