Alert.show()を使った場合、ダイアログの縦幅、横幅の最大サイズが設定されているおかげで想定外の表示を
してしまう場合がある。これを回避するために、Alertの拡張などを考えたのだけれど、肝心な部分がmx_internalだったり
privateだったりして、うまく拡張できなさそうだった。結局は一から作るハメになる。Flexではよくあること。
とりあえず MessageBox.mxml を作って以下を実現した。
・最大height,widthの拡張
・最大heightを越える場合はスクロールバーを表示。
ただのPanelを継承してるだけなので、あとは自由にカスタマイズできる。
12月 182011
AdvancedDataGridでセルの内容をコピーする方法は各所で紹介されているが
階層データやセル選択モード(MULTIPLE_CELLS)に対応しているものがない。
いろいろ試行錯誤した結果、AdvancedDataGridを継承して、下記のようなコードを書けば
選択中のセルの情報を取得できそうなことがわかった。
最初はlistItemsを使おうと思ったのだけれど、listItemsは基本的に表示中のアイテムしか
保持していないため、選択中のデータの取得には使えなかった。
それにしても、この程度のことが簡単にできないFlexにちょっと萎えた。
public var selectedCellDatas:Array = [];
override protected function addCellSelectionData(uid:String, columnIndex:int, selectionData:AdvancedDataGridBaseSelectionData):void {
var column:AdvancedDataGridColumn = columns[selectionData.columnIndex] as AdvancedDataGridColumn;
var label:String = column.itemToLabel(selectionData.data);
selectedCellDatas.push({
rowIndex: selectionData.rowIndex,
columnIndex: selectionData.columnIndex,
label: label
});
super.addCellSelectionData(uid, columnIndex, selectionData);
}
override protected function clearCellSelectionData():void {
selectedCellDatas = [];
super.clearCellSelectionData();
}