Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как сделать multiline в header стандартного DataGrid? (http://www.flasher.ru/forum/showthread.php?t=174839)

uzver3254 03.02.2012 18:46

Как сделать multiline в header стандартного DataGrid?
 
Возникла необходимость использовать стандартный компонент DataGrid. Воспользовался кодом из примера со спецификацией этого компонента, но не нашел там в описании как сделать текст заголовка многострочным (в одну строку заголовок не вмещается, а столбцов там много и они узкие)
Добавление стандартного символа "\n" хоть и разрывает строку, но вторая её часть становится невидимой, и это не зависимо от высоты header'а таблицы.
В свойствах элемента ни каких параметров намекающих на мультилайн нет.
Помогите, пожалуйста, дельным советом кроме "использовать стандартные компоненты не труъ"

Добавлено через 3 часа 14 минут
Ну ладно, вопрос слишком сложный, ни кто не знает. Может тогда хоть подскажите как в ячейку хэдэра рисунок импортировать?

silin 04.02.2012 01:36

вариант для иконки в хедере
Код AS3:

var dg:DataGrid = new DataGrid();
var col:DataGridColumn = dg.addColumn("column1");
col.headerRenderer = MyHeaderRenderer;
addChild(dg);

Код AS3:

public class MyHeaderRenderer extends HeaderRenderer 
{
        public function MyHeaderRenderer()
        {
                // битмап для примера
                var img:Bitmap = new Bitmap(new BitmapData(16, 16, false, 0xFF8000));
                addChild(img);
                icon = img;
        }
}

возможно, что порывшись в HeaderRenderer, удастся и высоту настроить с помощью костылей каких, но как-то не очевидно все, мутные они, ну их нафик

uzver3254 04.02.2012 02:16

A если добавлять не битмэп а мувиклип из библиотеки, как это делать? (да-да, чёртов нуб))

silin 04.02.2012 12:28

Код AS3:

var img:MovieClip = new Symbol1();//Symbol1 класс библиотечного мувика
icon = img;
addChild(img);


uzver3254 04.02.2012 23:38

а если мне надо во все 7 ячеек заголовка добавить разные картинки но не хочется под это 7 одинаковых классов писать, то почему он не переваривает конструкцию типа
Код AS3:

package
{
        import fl.controls.dataGridClasses.HeaderRenderer;
        import flash.display.*;
        import flash.text.*;
 
        /**
        * ...
        * @author ...
        */

        public class MyHeaderRenderer extends HeaderRenderer
        {
 
                public function MyHeaderRenderer()
                {
                        super();
 
                }
 
                public function addPic(noCol:uint):void
                {
                        var img:MovieClip;
                        switch (noCol)
                        {
                        case 1 :
                        img = new zag1();
                        icon = img;
                        addChild(img);
                        break;
                        case 2 :
                        img = new zag2();
                        icon = img;
                        addChild(img);
                        break;
                        case 3 :
                        img = new zag3();
                        icon = img;
                        addChild(img);
                        break;
                        case 4 :
                        img = new zag4();
                        icon = img;
                        addChild(img);
                        break;
                        case 5 :
                        img = new zag5();
                        icon = img;
                        addChild(img);
                        case 6 :
                        img = new zag6();
                        icon = img;
                        addChild(img);
                        case 7 :
                        img = new zag7();
                        icon = img;
                        addChild(img);
                        break;
                        }
                }
        }
}

ругается на
Код:

TypeError: Error #1006: addPic не является функцией.
при вызове
Код AS3:

c1.headerRenderer = MyHeaderRenderer;
c1.headerRenderer.addPic(1);


silin 05.02.2012 00:47

c1.headerRenderer это ссылка на класс, а не на экземпляр хедера, поэтому и ругается
как 'легально' добраться до самого хедера не знаю, мутные эти компоненты, говорю же

если это чем-то поможет, то у меня вот так получилось расставить иконки
Код AS3:

var dg:DataGrid = new DataGrid();
dg.setSize(300, 100);
dg.addItem( { first:1, second:2, third:3 } );
dg.setStyle("headerRenderer", MyHeaderRenderer);
addChild(dg);

Код AS3:

public class MyHeaderRenderer extends HeaderRenderer
{
 
        public function MyHeaderRenderer()
        {
 
                // здесь _column не определена еще, поэтому делаем все в следующем такте
                addEventListener(Event.ENTER_FRAME, this_enterFrame);
        }
 
        private function this_enterFrame(e:Event):void
        {
                removeEventListener(Event.ENTER_FRAME, this_enterFrame);
                // массив классов иконок в библиотеке
                var icons:Array = [zag1, zag2, zag3];
                var iconClass:Class = icons[_column] as Class;
                if (iconClass)
                {
                        icon = new iconClass();
                        addChild(icon);
                        invalidate();
                }
        }
}

зы. ну и какой смысл по каждому пустяку заниматься такими шаманством
хотя, возможно, я чего-то не догоняю и все делается просто и изящно..

uzver3254 05.02.2012 01:17

Цитата:

Сообщение от silin (Сообщение 1061000)
ну и какой смысл по каждому пустяку заниматься такими шаманством

Если речь о том почему так адобе захотели - не знаю. Это правда не рационально выглядит. Можно же было иконку сделать элементом стандартных свойств компонента.

А ели о том, зачем я этим всем заморачиваюсь и Вас тревожу: надо сделать универсальную оболочку для лабораторных работ одному вузу, чтоб профессоры могли редактировать все элементы отчёта, как они привыкли делать это в ворде, а тут ни индексов, ни переносов в таблицах нельзя, попробуй это 60-70летним мужам от электроэнергетики объясни... Пусть хоть мувиклипы zag1 zag2 вставляют какие им надо - всё мне меньше напряга.


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

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