2011-01-30 65 views
4

我有一个主 - 细节数据窗口。在详细信息窗口中,当用户点击一行时,我打开另一个数据窗口作为弹出数据窗口,它位于用户单击的行的正下方。只要细节窗口中的行数少于11行,它就可以正常工作。当窗口包含11行以上并且用户单击下面一行时,弹出窗口不会放在应该出现的位置。Powerbuilder:定位弹出框

我的猜测是,当用户点击较低区域中的一行时,窗口将滚动到底部,并且一些行由于滚动而隐藏。如果两行由于滚动而隐藏,则弹出窗口在所需行下方打开两行。我的定位逻辑如下 -

// "parent" is the user object that contains the datawindow 
// "row" contains clicked row number 
// "this" points to the detail datawindow 

ll_detail_height = long(this.Object.DataWindow.Detail.Height) 
dw_status.y = this.y + (ll_detail_height * (row)) + parent.y 

我该如何解决这个问题?

+0

为什么PowerBuilder的社区这么小?如果我询问了关于JQuery/.NET/PHP的任何内容,现在至少会有2-3个答案:-( – 2011-01-30 07:16:19

回答

5

我有解决方案。诀窍是使用细节数据窗口的FirstRowOnPage属性,并使用它来确定y位置 -

ll_first_row = long(this.Object.DataWindow.FirstRowOnPage) 
ll_row = row - ll_first_row + 1 
ll_detail_height = long(this.Object.DataWindow.Detail.Height) 
dw_status.y = this.y + (ll_detail_height * ll_row) + parent.y