Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как узнать когда у Label поменялась высота? (http://www.flasher.ru/forum/showthread.php?t=117913)

wvxvw 10.11.2008 17:56

Как узнать когда у Label поменялась высота?
 
Ситуация такая: кастомный итем-рендерер, в нем есть лейбл, который может быть многострочным. Как узнать, когда нужно обновить / пересчитать высоту контейнера после присвоения тексту нового значения?

darksranger 10.11.2008 21:29

Привет, а событие change нельзя обрабатывать ?
если нет
я бы сматрел наверно входящий текст и если он по правилам помещается в больше полей чем отрендеренно, то запускать обновление

вобще не очень понятна ситуация )))

wvxvw 11.11.2008 11:54

Ок, проясню немного ситуацию: итемрендерер создается из другого компонента наследующегося от VBox. (Т.е. вообще не UITextField), В боксе есть 2 лейбла. Т.е. в ситуации когда либо у первого либо у второго лейбла будет больше чем 1 строчка итемрендерер обрежется снизу. На сколько я понимаю, листбейс, который и решает сколько места нужно отвести каждому рендереру не может правильно посчитать высоту в такой ситуации.
Да, еще, высоту можно получить в creationComplete, но это уже поздно, т.как если в нем попробывать еще раз поменять высоту получится бесконечный цикл в котором листбейс будет все время пересчитывать высоту по-своему после изменения значения и пересоздавать рендерер по-новой...

darksranger 11.11.2008 19:36

а при создании нельзя задать высоту ? тогда можно было при получении текста который идет в label просчитать высоту и ее уже передать в создание

либо вариант с creationComplete, только устанвливая флаги на единственное срабатывание, ( ну соотвественно, потом его где то сбрасывать ( чтобы при изменении текста, опять пересчитать высоту )

†‡Paladin‡† 11.11.2008 20:19

Ловить когда у itemRenderer`а поменяется data.

Код AS3:

override public function set data(value:Object):void {                
  super.data = value;
  //можно тупо написать validateNow();
}



Часовой пояс GMT +4, время: 20:17.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.