Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   DataGrid: толщина hGridLines (http://www.flasher.ru/forum/showthread.php?t=94460)

Prey 12.04.2007 16:40

DataGrid: толщина hGridLines
 
Как изменить толщину hGridLines и vGridLines соответсвенно в компоненте DataGrid,

Как я понял нормальными методами никак. Пытался применить хак по аналогии как делал уважаемый __etc, когда было необходимо добиться сплошной заливки хеадера в таблице (http://flasher.ru/forum/showthread.php?t=93501), функцию отрисовки в классе датагрид нашел, но что то ничего не получилось :(

Помогите, плииз..

etc 12.04.2007 17:12

Отрисовка линий идет в методе drawColumns. Там толщина линии стоит 0. Можно, конечно, опять написать хак, если надо :D

Prey 12.04.2007 18:53

Дада! очень надо.
пытался сам (нашел эту функцию), делал по аналогии с отрисовкой сплошным цветом хеадера, но че то ваще перестало таблицу отрисовывать (нахимичил наверное не там где надо :) ).

Буду очень признателен! :)

etc 12.04.2007 19:01

Код:

my_dg.columnNames = ['a', 'b'];
my_dg.addItem({a:'aaa', b:'bbb'});
my_dg.addItem({a:'aaa', b:'bbb'});
my_dg.addItem({a:'aaa', b:'bbb'});
changeDrawColumnsHandler = function (grid) {
        grid.drawColumns = function() {
                var hLineHeight = 4; // тощина гор. линии
                var vLineWidth = 2; // толщиа верт. линии
                delete this.invDrawCols;
                var lines = this.lines_mc=this.listContent.createEmptyMovieClip("lines_mc", this.LINEDEPTH);
                var x = 0.75;
                var oldX = 1;
                var tmpHeight = this.height-1;
                var lineCol = this.getStyle("vGridLineColor");
                var len = this.columns.length;
                this.placeSortArrow();
                for (var i = 0; i<len; i++) {
                        var col = this.columns[i];
                        var prop = (this.enabled) ? "backgroundColor" : "backgroundDisabledColor";
                        var bgCol = col.getStyle(prop);
                        x += col.__width;
                        lines.moveTo(oldX, 1);
                        lines.lineStyle(0, lineCol, 0);
                        var tmpX = Math.floor(x);
                        lines.lineTo(tmpX, 1);
                        if (i<this.columns.length-1 && this.getStyle("vGridLines")) {
                                lines.lineStyle(vLineWidth, lineCol, 100);
                        }
                        lines.lineTo(tmpX, height);
                        lines.lineStyle(vLineWidth, lineCol, 0);
                        lines.lineTo(oldX, height);
                        lines.lineTo(oldX, 1);
                        if (this.__showHeaders) {
                                var cell = this.headerCells[i];
                                cell._x = oldX+2;
                                cell.hO._x = oldX;
                                cell.setSize(col.__width-5, Math.min(this.__headerHeight, cell.getPreferredHeight()));
                                cell.hO._width = col.__width-2;
                                cell.hO._height = this.__headerHeight;
                                cell._y = (this.__headerHeight-cell._height)/2;
                                this.header_mc["sep"+i]._x = x-2;
                                this.listContent.disableHeader._width = this.totalWidth;
                        }
                        for (var j = 0; j<this.__rowCount; j++) {
                                if (i == 0) {
                                        this.rows[j].colBG.clear();
                                }
                                var w:Number = col.__width;
                                this.rows[j].drawCell(i, oldX, w, bgCol);
                        }
                        oldX = x;
                }
                if (this.getStyle("hGridLines")) {
                        this.lines_mc.lineStyle(2, this.getStyle("hGridLineColor"));
                        for (var i = 1; i<this.__rowCount; i++) {
                                this.lines_mc.moveTo(hLineHeight, this.rows[i]._y);
                                this.lines_mc.lineTo(this.totalWidth, this.rows[i]._y);
                        }
                }
        };
};
changeDrawColumnsHandler(my_dg);
my_dg.setStyle('hGridLines', true);
my_dg.setStyle('hGridLineColor', 0xFF0000);
my_dg.setStyle('vGridLineColor', 0x0000FF);
my_dg.redraw();

Как-то так. Мог накосячить.

Prey 12.04.2007 19:29

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

Теперь осталось отыскать где "прячутся" вертикальные линии в хеадере (там на них хак не повлял) :)

Спасибо!


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

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