2011-01-30 2 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 ответа к настоящему времени :-( –

+0

Просто не так много людей, использующих Powerbuilder. Я боюсь. Мы умирающая порода: ( –

+1

@Colin Pickard: Это очень грустно: '(:' (: '( –

ответ

5

У меня есть решение. Хитрость заключается в том, чтобы использовать FirstRowOnPage свойство подробно DataWindow и использовать его для определения 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 
Смежные вопросы