数据窗口事件的主要事件和触发时机:
事件
|
触发时机
|
ButtonClicking | 当数据窗口对象上的按钮对象的SuppressEventProcessing属性设置为no后,用户单击该按钮时触发(在Buttonclicked事件之后,Clicked事件之前),在系统处理按钮的缺省动作前触发 |
ButtonClicked | 当数据窗口对象上的按钮对象的suppresseventprocesing属性设置为no后,用户单击该按钮时触发,在系统处理按钮的缺省动作后触发 |
Clicked | 当用户单击数据窗口控件中非编辑区域或其他位置时触发 |
Constructor | 窗口的open事件发生之前触发 |
DBError | 在数据窗口控件访问数据库过程中发生数据库错误时触发 |
Destructor | 在窗口的close事件发生之后触发 |
DboubleClicked | 当用户双击数据窗口控件中非编辑域或其他位置时角触发 |
DragDrop | 当某个被拖曳控件放置到数据窗口控件时被触发 |
DragEnter | 当某个被拖曳控件进入数据窗口控件时被触发 |
DragLeave | 当某个被拖曳控件离开数据窗口控件时被触发 |
DragWithin | 当某个被拖曳控件处于数据窗口控件时被触发 |
EditChanged | 当用户在数据窗口控件的编辑控件中按任何键时触发 |
Error | 当数据窗口对象的数据或表达式属性发生错误时触发 |
GetFcocus | 当数据窗口控件得到输入焦点前触发 |
ItemChanged | 当数据窗口控件中某个域被修改并且该域推动输入焦点时触发 |
ItemError | 当用户修改焦点后移开,输入的数据没能通过该列的有效性检验时触发 |
ItemFocusChanged | 当焦点从一个可编辑字段转移到另一个可编辑字段时触发 |
LoseFocus | 当数据窗口控件本身失去焦点时触发 |
Other | 当发生了某个window消息而该消息有不对应该控件的某个powerbuilder事件时触发 |
PrintEnd | 在数据窗口打印结束后触发 |
PrintPage | 在每页数据格式化打印之时触发 |
RbuttonDown | 用鼠标右击该控件时触发 |
Resize | 当用户或程序改变数据窗口控件的大小时触发 |
RetrieveEnd | 当数据窗口检索完数据后触发 |
RetrievRow | 当数据窗口检索每一条记录时触发 |
Retrievestart | 当数据窗口开始检索每一条记录触发 |
RowFocusChanged | 当数据窗口控件的当前行被改变时触发 |
ScrollHorizontal | 当用户使用tab上下箭头键或滚动条左右移动数据窗口中的数据时触发 |
ScrollVertical | 当用户使用tab上下箭头键或滚动条上下移动数据窗口中的数据时触发 |
SQLPreview | 在调用retrieve(),update()或reselectrow()函数后,SQL语句被发送到DBMS前触发 |
UpdateEnd | 当数据窗口更新了数据库后触发 |
UpdateStart | 当调用update()函数后,修改数据库数据前触发 |
下面做一个练习以体会数据窗口常用事件的触发时机:
建立一个w_dwevent窗口,其上放置自定义的数据窗口控件(可做基本的数据编辑及处理),两个文本标签以显示触发的事件名称,一个列表框以改变当前输入焦点和列出所触发的所有事件。
修改列表框控件的排序属性,设定为"假"。
修改该窗口的菜单名称及标题属性值。
在窗口的open事件中加入如下代码:
修改m_main菜单,在"销售报表"项中的clicked事件中加入语句:opensheet(w_dwevent,w_main,2,layered!)
在窗口的dw_1控件的各常用事件中加入st_2.text="事件名称"代码。其中getfocus事件的代码如下:
losefocus的事件代码如下:
itemfocuschanged的代码如下:
按上面的形式加入其它事件的代码。
运行程序,打开该窗口,使用其中的数据窗口控件,查看事件的触发时机。
数据空间