PB powerbuilder 数据库窗口DW中下拉窗口、子数据窗口响应事件

数据库窗口中相应鼠标点击、键盘移动等操作都有全面的事件进行支持,但是下拉数据库窗口的相关事件就不太明朗。

比如图中,下拉窗口“新增用途”如何相应鼠标点击操作,很多PB新手可能就一时找不到头绪了。 

PB powerbuilder 数据库窗口DW中下拉窗口、子数据窗口响应事件

 数据库窗口DW中下拉窗口、子数据窗口响应事件的方法。

1、需要使用到自定义事件“pbm_command”

2、事件脚本如下:

string  ls_object
integer ii_num

DataWindowChild ldwc_Child[]

GetChild('yt' , ldwc_Child[1])
GetChild('lqr', ldwc_Child[2])
GetChild('ghr', ldwc_Child[3])

for ii_num = 1 to 3 
	IF hwndchild = Handle(ldwc_Child[ii_num]) THEN 
        //通过‘hwndchild’来判断操作落在哪个子窗口上
		CHOOSE CASE notificationcode
			CASE 2048 // 焦点落在子窗口上	
			CASE 1281 // 子窗口被点击	
				ls_object = ldwc_Child[ii_num].GetObjectAtPointer()	
                //确定操作相关的对象
				ls_object = left(ls_object,pos(ls_object,'~t') - 1)
				if ls_object = 't_open' then
					choose case ii_num
						case 1
							open(w_edit_sjcyt)
							ldwc_Child[ii_num].settransobject(sql_kf)
							ldwc_Child[ii_num].retrieve()		
						case 2,3
							open(w_select_sjcsyr)
							ldwc_Child[ii_num].settransobject(sql_kf)
							ldwc_Child[ii_num].retrieve(gs_gsbm)					
					end choose					
				end if
			CASE 2314 // 子窗口被鼠标右键点击	
			CASE 2311 // 鼠标滑过子窗口
		END CHOOSE
		exit
	END IF
next