Flex のデータグリッドでセルのテキストを選択可能にする魔法のコード

DataGrid ではセルのテキストを選択するようなことはデフォルトではできません。それを可能にする魔法のコード(大袈裟ですが…)を紹介します。

デフォルトのデータグリッドカラムのアイテムレンダラーである DataGridItemRenderer は UITextField を継承しています。

UITextField の selectable プロパティを true にすると、文字列の選択が可能になります。

下記のように DataGrid のサブクラスを作って、アイテムレンダラーのファクトリの取得時にフックして properties を使って設定するだけです。

public class CellSelectableDataGrid extends DataGrid {

    override public function get itemRenderer():IFactory {
        var renderer:ContextualClassFactory = super.itemRenderer as ContextualClassFactory;
	if (renderer) {
	    renderer.properties = { "selectable": true };
	}
	return renderer;
    }

}