Domanda

Ho una finestra dati master-detail.Nella finestra dei dettagli, quando l'utente fa clic su una riga, sto aprendo un'altra finestra dati come finestra dati popup che è posizionata appena sotto la riga su cui l'utente ha fatto clic.Funziona bene fintanto che ci sono meno di 11 righe nella finestra dei dettagli.Quando la finestra contiene più di 11 righe e l'utente fa clic su una riga dalla regione inferiore, il popup non viene posizionato dove dovrebbe essere.

La mia ipotesi è che quando l'utente fa clic su una riga nella regione inferiore, la finestra viene fatta scorrere fino in fondo e alcune righe vengono nascoste a seguito dello scorrimento.Se due righe vengono nascoste a causa dello scorrimento, il popup apre le righe di rimorchio sotto la riga desiderata.La mia logica di posizionamento è la seguente -

// "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

Come posso risolvere questo problema?

È stato utile?

Soluzione

Ho la soluzione.Il trucco è usare la proprietà FirstRowOnPage della finestra dei dati di dettaglio e usarla per determinare la posizione 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top