Показать сообщение отдельно
Старый 25.03.2010, 14:04
bastrakov вне форума Посмотреть профиль Отправить личное сообщение для bastrakov Найти все сообщения от bastrakov
  № 3  
Ответить с цитированием
bastrakov

Регистрация: Nov 2009
Сообщений: 64
ну мало-ли... еще кто-то мучается.

Код AS3:
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml"
             open="comboOpenHandler(event)"
             rowCount="12" 
             closeDuration="0" openDuration="0">
 
    <mx:Script>
        <![CDATA[
            private function comboOpenHandler(e:Event):void{
                var c:ComboBox=e.currentTarget as ComboBox;
//определяем глобально, где стоит поле
                var yC:Number = c.localToGlobal(new Point(c.x,c.y)).y;
 
//тупо прикидываем, откроется он вниз или вверх. 1100 - мой размер экрана 1024.
                var downOpen:Boolean = (yC + c.height + c.dropdown.height)< 1100;
 
                if (downOpen) {
//сдвигаем по вертикали
                    c.dropdown.y =c.dropdown.y - c.height - 1;
                    if (c.dataProvider.length > 4) c.dropdown.y -= (c.height*2); 
                } else {
                    c.dropdown.y =c.dropdown.y + (c.height*2) + 1;
                    if (c.dataProvider.length > 4) c.dropdown.y += c.height;
                }
 
//сдвигаем по горизонтали и увеличиваем для накрывания всего поля
                c.dropdown.width = c.width+2;
                c.dropdown.x = c.dropdown.x-1;
                if (c.dataProvider.length < 2)
                    c.dropdown.height = c.height + 2; 
            }
        ]]>
    </mx:Script>	
 
</mx:ComboBox>
во