Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Фиксированная колонка в DataGrid. (http://www.flasher.ru/forum/showthread.php?t=142218)

Tr1te 15.07.2010 16:27

Фиксированная колонка в DataGrid.
 
В DataGrid много колонок, все в экран не помещаются, для этого внизу есть ползунок. Как мне сделать так чтобы когда я двигаю ползунок то первая колонка была статичной, не двигалась, а все остальные колонки перелистывались?

mayakwd 15.07.2010 16:53

стандартными средствами никак. только извращаясь с двумя датагридами и дополнительным контейнером
ну или пилить датагрид )

Tr1te 15.07.2010 16:56

А когда один Datagrid будет смещаться по вертикали скролом или по нажатию. Как мне ловить это и изменять в другом Datagrid.

mayakwd 15.07.2010 17:13

скролы просто ставите в контейнере, а не в датагриде, и при скролле смещаете оба по вертикали.

Tr1te 15.07.2010 17:37

Так UIScrollBar подключается только к TextField'у.
А какие события отвечают за нажатие кнопки вниз/вверх, для UIScrollBar.

mayakwd 17.07.2010 20:08

UIScrollBar можно подключить к чему угодно.

@see ScrollEvent, UIScrollBar, ScrollPane

Вот вам наглядный пример без ScrollPane:
Код AS3:

package {
        import fl.events.ScrollEvent;
        import fl.controls.UIScrollBar;
 
        import flash.display.Shape;
        import flash.display.Sprite;
        import flash.geom.Rectangle;
 
        /**
        * @author Ilya Malanin (designer@pastila.org)
        */

        public class Test extends Sprite {
                public static const ITEMS_COUNT : uint = 5;
 
                private var scroll : UIScrollBar;
                private var container : Sprite;
 
                public function Test() {
                        container = new Sprite();
                        container.scrollRect = new Rectangle(0, 0, 100, 300);
                        container.x = 20;
                        container.y = 20;
                        addChild(container);
 
                        var i : uint = ITEMS_COUNT;
                        var maxY : Number = 0;
                        while (i--) {
                                var shape : Shape = new Shape();
                                with (shape.graphics) {
                                        beginFill(Math.random() * uint.MAX_VALUE, 1);
                                        drawRect(0, 0, 100, 100);
                                        endFill();
                                }
                                shape.y = maxY;
                                container.addChild(shape);
 
                                maxY += shape.height;
                        }
 
                        scroll = new UIScrollBar();
                        scroll.addEventListener(ScrollEvent.SCROLL, scrollEventHandler);
                        scroll.maxScrollPosition = Math.max(maxY - 300, 0); // = container.contentHeight - container.height;
                        scroll.setSize(16, 300);
                        scroll.x = container.x + 100;
                        scroll.y = container.y;
                        addChild(scroll);
                }
 
                private function scrollEventHandler(event : ScrollEvent) : void {
                        setContainerScrollPosition(event.position);
                }
 
                private function setContainerScrollPosition(position : Number) : void {
                        var rect : Rectangle = container.scrollRect;
                        rect.y = position;
                        container.scrollRect = rect;
                }
        }
}



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

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