PDA

Просмотр полной версии : header at DataGrid


sngbiz
22.03.2007, 14:58
как сделать чтоб заливка хедера была не градиентом, а солид?

OracleN
10.04.2007, 21:44
как сделать чтоб заливка хедера была не градиентом, а солид?

Это рендер тебе надо писать, но это не так уж и просто, бо там и сортировка отображается и т.д.

etc
10.04.2007, 21:45
В заголовках рендерер вроде бы не пользуется (не смотрел, лень и не буду). А настроить градиент можно.

OracleN
10.04.2007, 21:49
В заголовках рендерер вроде бы не пользуется (не смотрел, лень и не буду). А настроить градиент можно.

Плиз, скажи как настроить градиент, я же чего про рендеры взялся, такая же задача. Бо искал везде, только нашел как через рендре, но там свой гемор

etc
10.04.2007, 21:54
http://livedocs.macromedia.com/flash/8/main/00003255.html

Кажется там можно указать массив из двух элементов с цветом (в headerColor), чтобы поменять оба цвета градиента.

OracleN
10.04.2007, 22:01
Не нефига, пишу

var tmp = new Array(0xFF0000,0xFF0000);
mainGrid.setStyle('headerColor',tmp);

не воспринимает он массив, только если цвет прописать, но тогда будет градиент, т..е только один цвет указываешь.

etc
10.04.2007, 22:06
Заглянул в код DataGrid, увидел, что в drawHeaderBG используется только один цвет. Вариантов немного, только хак. Т.е. я могу написать код для изменения градиента, если это нужно.

Задавать цвета градиентов можно было во Flex, но он тут не при делах, ясное дело.

OracleN
10.04.2007, 22:09
А вообще долго писать это, или может подскажишь как самому написать, или примерчик небольшой. бо очень сильно надо.

etc
10.04.2007, 22:19
Ну вот хак:

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'});
changeDrawHeaderBGHandler = function (grid) {
grid.drawHeaderBG = function() {
var mc = this.header_mc;
mc.clear();
var o = this.__viewMetrics;
var tot = Math.max(this.totalWidth, this.displayWidth+3);
mc.moveTo(o.left, o.top);
var matrix:Object = {matrixType:"box", x:0, y:0, w:tot, h:this.__headerHeight+1, r:Math.PI/2};
var colors:Array = [0xFFCC00, 0xFF0000, 0xffffff];
var ratios:Array = [0, 60, 255];
var alphas:Array = [100, 100, 100];
mc.beginGradientFill("linear", colors, alphas, ratios, matrix);
mc.lineStyle(0, 0x000000, 0);
mc.lineTo(tot, o.top);
mc.lineTo(tot, this.__headerHeight+1);
mc.lineStyle(0, 0x000000, 100);
mc.lineTo(o.left, this.__headerHeight+1);
mc.lineStyle(0, 0x000000, 0);
mc.endFill();
};
};
changeDrawHeaderBGHandler(my_dg);
my_dg.redraw();

В внутри функции можно задать нужные цвета и вообще переписать отрисовку фона у хедера
my_dg — DataGrid.

OracleN
11.04.2007, 00:30
Ну вот хак:

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'});
changeDrawHeaderBGHandler = function (grid) {
grid.drawHeaderBG = function() {
var mc = this.header_mc;
mc.clear();
var o = this.__viewMetrics;
var tot = Math.max(this.totalWidth, this.displayWidth+3);
mc.moveTo(o.left, o.top);
var matrix:Object = {matrixType:"box", x:0, y:0, w:tot, h:this.__headerHeight+1, r:Math.PI/2};
var colors:Array = [0xFFCC00, 0xFF0000, 0xffffff];
var ratios:Array = [0, 60, 255];
var alphas:Array = [100, 100, 100];
mc.beginGradientFill("linear", colors, alphas, ratios, matrix);
mc.lineStyle(0, 0x000000, 0);
mc.lineTo(tot, o.top);
mc.lineTo(tot, this.__headerHeight+1);
mc.lineStyle(0, 0x000000, 100);
mc.lineTo(o.left, this.__headerHeight+1);
mc.lineStyle(0, 0x000000, 0);
mc.endFill();
};
};
changeDrawHeaderBGHandler(my_dg);
my_dg.redraw();

В внутри функции можно задать нужные цвета и вообще переписать отрисовку фона у хедера
my_dg — DataGrid.

Гениально, даже очень гениально. Спасибо большое.

etc
11.04.2007, 01:45
Гениально было бы не ломая компоненты. А так — обычный хак.