PDA

Просмотр полной версии : Редактирование List по doubleClick


spacecadet
15.01.2010, 11:33
Доброго времени суток всем!

Возник следующий вопрос: как реализовать редактирование списка List по двойному щелчку? Свойство editable для List ставлю в false, так как он служит списком выбора, и одиночный щелчок обрабатывается для изменения порядка отображения неких данных. Делаю примерно вот так:

<mx:List ... dataProvider="{comboList}" labelField="ObjExName" id="lstObj" doubleClickEnabled="true" click="selectObj()" doubleClick="changeList()" editable="false"></mx:List>

...

private function changeList():void
{
if (lstObj.selectedIndex != -1)
{
lstObj.createItemEditor(0,lstObj.selectedIndex);
(lstObj.itemEditorInstance as TextInput).text = comboList[lstObj.selectedIndex].ObjExName;
(lstObj.itemEditorInstance as TextInput).setFocus();
(lstObj.itemEditorInstance as TextInput).addEventListener(FocusEvent.FOCUS_OUT,editEnd);
}
}

private function editEnd(e:FocusEvent):void
{
comboList[lstObj.selectedIndex].ObjExName = (lstObj.itemEditorInstance as TextInput).text;
lstObj.destroyItemEditor();
}

...

То есть по даблклику создаю итемедитор, добаляю прослушку к событию потери фокуса, что по моему мнению должно означать конец редактирования и соответственно в конце уничтожаю итемедитор. Создается он успешно, но вот при окончании редактирования возникает ошибка "Не удается вызвать свойство или метод со ссылкой на объект "null". Помогите разобраться!

alatar
15.01.2010, 18:44
вот тут (http://flexcookbook.ru/2008/10/datagrid_doubleclick_edit/), делают похожее с DataGrid, думаю разница небольшая.

lighto
19.01.2010, 07:46
хм.... а почему бы у листа на дабл клик не вешать эдиттабле равного трул??? ну а потом что нить придумать на что опять фалс его ставить, типа когда лист не активен) или при нажатии ентер, ескейпа иль ишо чего?

spacecadet
20.01.2010, 12:06
вот тут (http://flexcookbook.ru/2008/10/datagrid_doubleclick_edit/), делают похожее с DataGrid, думаю разница небольшая. - спасибо за ссылочку, буду разбираться!

хм.... а почему бы у листа на дабл клик не вешать эдиттабле равного трул??? ну а потом что нить придумать на что опять фалс его ставить, типа когда лист не активен) или при нажатии ентер, ескейпа иль ишо чего? - да, это первое, что пришло мне в голову :) но в таком случае после даблклика придется сделать еще одиночный клик мышкой, чтобы начать редактирование, а это не комильфо. Наверняка есть способ вручную сгенерировать событие типа ListEvent.ITEM_EDIT_BEGIN после даблклика, чтобы еще раз не жамкать мышкой по листу, но я его не знаю как это сделать и очень надеюсь на помощь уважаемых форумчан!