Как установить фокус на конкретного ребенка Vbox в flex 4 - PullRequest
0 голосов
/ 08 марта 2012

У меня есть VBox, который содержит несколько гридов в качестве дочерних элементов. Вы должны прокрутить, чтобы увидеть все сетки. В сетках есть кнопки. Если вы нажмете любую кнопку, она покажет дочерние элементы для этой сетки, удалив все сетки из VBox и заполнив их дочерними элементами этой сетки. Существует кнопка «Назад», чтобы удалить дочерние элементы и заполнить VBox предыдущими сетками. Теперь, когда я нажимаю кнопку «Назад», я хочу вернуться к конкретной таблице, из которой я нажал, чтобы увидеть ее дочернюю. Если это в нижней части свитка, то, когда я вернусь, я увижу эту сетку вместо верхней сетки. Но она всегда показывает мне верхнюю сетку. Я попробовал метод setFocus. Но это не работает.

У меня есть холст в качестве корневого родителя и один Vbox в качестве дочернего. И Vbox содержит все сетки. И если вы нажмете кнопку Grid, то у Vbox появятся дети этой Grid, которые я объяснил выше. Дети Сетки - это тоже Сетки.

Пожалуйста, помогите с этим. Я застрял здесь. Заранее спасибо:)

1 Ответ

0 голосов
/ 09 марта 2012

setFocus() метод только активирует компонент, а не прокручивает область просмотра.Для этого вы можете использовать

var spDelta:Point = dataGroup.layout.getScrollPositionDeltaToElement(index);

if (spDelta)
{
    dataGroup.horizontalScrollPosition += spDelta.x;
    dataGroup.verticalScrollPosition += spDelta.y;
}

, где dataGroup может быть вашим VGroup.

Если это не работает или не то, что вы хотите, вы можете попробоватьполучите высоту компонента, который вы хотите отобразить, и переместите скроллер на эту высоту

var index:Number = dataGroup.getElementIndex(comp);
var offset:Number = dataGroup.getElementAt(index).height;
scroller.viewport.verticalScrollPosition = index * offset;

Где dataGroup - это VGroup, а comp - это сетка данных, которую вы хотите прокрутитьк.

...