PDA

Просмотр полной версии : DataGrid.variableRowHeight и ItemEditor.


Azy
08.02.2007, 12:59
Написал ItemEditor:
Класс:
package ed
{
import mx.controls.TextArea;
import flash.events.Event;
import flash.system.fscommand;

public class EDescription extends TextArea
{
public function EDescription()
{
super();

this.addEventListener("change", this.changeEvent);
}

private function changeEvent(eventObject:Event):void
{
this.height = (this.textHeight <= 48) ? 48 : this.textHeight+6;
this.verticalScrollPosition=0;
}
}
}
Компонент:
<?xml version="1.0" encoding="utf-8"?>
<ed:EDescription xmlns:ed="ed.*" width="100%" wordWrap="true"/>
у DataGrid, в котором используется данный ItemEditor стоит свойство variableRowHeight=true;
Теоретически высота строки должна меняться вместе со свойством eDescription.height. Но нет. Из чего делаю вывод, что она устанавливается по свойству ItemRenderer.height. Как заставить строку изменять размер, вместе с размеров ItemEditor-a?

__i
08.02.2007, 14:34
А практически ничего не меняется ), листовым компонентам пофигу на изменение размера айтемрендера в процессе выполнения программы. Как видно на вскидку то листовые компоненты получив экземпляр первого айтем рендера, берут по дефолту его размеры, а на размеры сделующих им всеравно. Я канешно могу ошибаться... но врядли :D

Azy
08.02.2007, 14:45
Тогда к ячейке как доступ получить то? раньше у CellRenderer-a было проперти owner. Есть ли аналог сейчас?
Может хоть что-нибудь типа row.height поменять можно будет.

__i
08.02.2007, 15:03
Это все шаманство). Все компоненты управляються через датапровайдер, сейчас у атем рендеров есть такое свойство, но тут вопрос как получить нужный тебе айтем рендер.... :D.

Nirth
08.02.2007, 16:21
Ты хочешь получить доступ из ItemRenderer'а к хозяину?


myRenderer.listData.owner

Azy
10.02.2007, 15:25
решил проблему
var eDataGrid:EDataGrid = EDataGrid(this.listData.owner);

trace(eDataGrid.editedItemRenderer.explicitHeight = this.textHeight+6);