2012-03-08 3 views
0

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

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

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

ответ

0

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 - это сетка данных, которую вы хотите прокрутить.

+0

Привет инквизитивный. Спасибо за ваш ответ. Я не мог реализовать первый предложенный вами метод. Он говорит, что у VBox нет никакого свойства, называемого макетом. Второй метод, о котором вы говорили, я не мог реализовать скроллер с vbox. Я написал, как этот <ы: скроллер ид = "скроллер"><тх: VBox ID = "VBox" ширина = "100%" высота = "100%"> \t \t \t Но это показывает ошибку. В сообщении об ошибке говорится: «mx.containers.VBox» не присваивается свойству по умолчанию «viewport» типа «spark.core.IViewport» ». Я не могу заменить VBox на VGroup для своей цели. Спасибо за ваш ответ :) – Tahlil