现在的位置: 首页 > 综合 > 正文

子数据窗口回卷事件

2017年10月02日 ⁄ 综合 ⁄ 共 1133字 ⁄ 字号 评论关闭

子数据窗口回卷事件

这里有一个例子教你如何在脚本中使用这些未公开的通知代码。

有一个地址表的数据窗口,对city,zip字段用DDDW显示方式。city字段的DDDW会给用户一个城市列表,每一个又有分别的州及邮政编码,用户从下拉城市列表中选中一个城市时,希望可以同时确定州及邮政编码。

同时要注意到:许多城市有多个邮政编码(如:西雅图就有几百个!),当用户从如:西雅图,WA 98001...西雅图,WA 98019 列表中选择一个时,仅仅只会触发Itemchanged事件一次。如果不管用户可能选择一个完全不同的邮编的情况,将不会触发别的PB事件。如果有的话,只可能是子数据窗口的RowFocusChanged事件。(记住,此事件仅当用户用鼠标或箭头键在数据窗口中的行间移动时触发)。

好了,我们要作的既是截获子数据窗口发送的wm_command消息。我们可以用上面处理命令按钮的方法来处理,不过有一点不同。首先,DDDW实际上是个子数据窗口,所有的通知消息会传给它的父数据窗口(不是父窗口)。所以你必须在数据窗口控件中定义自定义事件“ue_command". 下面是ue_command事件中的脚本:

// s cript for ue_command event (WM_COMMAND)
int iRet, iDWRow, iDDRow
string sDWCol
DataWindowChild dwc
// Is the notification message from our DDDW?
sDWCol = This.GetColumnName()
IF sDWCol = 'city' THEN
// Is it the RowFocusChanged Notification Code?
IF IntHigh(Message.LongParm) = 2048 THEN
// Get child DataWindow control
iRet = This.dwGetChild(sDWCol, dwc)
// Get the DataWindow's current row
iDWRow = This.GetRow()
// Get the DropDown's current row
iDDRow = dwc.GetRow()
IF iDDRow > 0 THEN
iRet = This.SetItem(iDWRow, 'state', dwc.GetItemString(iDDRow, 'state'))
iRet = This.SetItem(iDWRow, 'zip', dwc.GetItemString(iDDRow, 'zip'))
ELSE
iRet = This.SetItem(iDWRow, 'state', '')
iRet = This.SetItem(iDWRow, 'zip', '')
END IF
END IF
END IF

抱歉!评论已关闭.