PDA

Просмотр полной версии : ComboBox, ListEvent.


Касеал
14.09.2009, 14:07
Необходимо следующее:

var str:String = myComboBox.selectedItem.toString();

Причём это нужно сделать именно при клике на каком-нибудь пункте.

Если подписаться на это событие:
myComboBox.addEventListener(ListEvent.CHANGE, event);, то текст из уже установленного пункта можно будет получить, только если выбрать сначала другой.

Если на это:
myComboBox.addEventListener(DropdownEvent.CLOSE, event);, то текст будем получать даже когда никакой пункт не выбран, что само собой разумеется, исходя из типа события.

Как отловить событие нажатия именно на каком-нибудь пункте?
myComboBox.addEventListener(ListEvent.ITEM_CLICK, event); - вот это событие описано в документации, но оно не возникает почему-то.

lighto
14.09.2009, 14:27
У комбо бокс есть параметры
если ты в комбо бокс выташил что то из БД иль ввел заранее в массиве
var str:String = myComboBox.selectedItem.{тот параметр который нужен}.toString()
flex его(параметр) не подсвечивает но он есть обрашайся к нему как говориться принудительно
только {} не пиши :-).

Касеал
14.09.2009, 15:29
Шутку про скобки понял. Очень смешно.

Данные, которыми заполняется ComboBox, берутся из текстового файла и представляют собой набор стандартных фраз для чата. Так вот, даже если и работает такой вариант, на какое событие я буду обращаться к своим элементам?
При известном selectedItem мне не нужно ничего мудрить, я просто беру его значение.

Вопрос заключается не в том, как взять данные с конкретного пункта, а как отловить выбор этого пункта.
А если ещё конкретнее, почему не происходит событие ListEvent.ITEM_CLICK, которое описано в документации как событие, возникающее в тот момент когда пользователь щёлкает мышкой на item, когда курсор мыши находится в компоненте?

CblP
14.09.2009, 16:01
можно попробовать заюзать myComboBox.addEventListener(ListEvent.CHANGE, event);
и после выбора "сбрасывать/менять" значение selectedItem - вручную.
Только при этом по идее сработает снова ивент ;-)

yorlin
14.09.2009, 18:00
А чем вам не подходит решение из того же мануала?
http://livedocs.adobe.com/flex/3/langref/mx/controls/ComboBox.html
В самом низу.

Касеал
14.09.2009, 19:52
Решение мне не подходит по следующим причинам. Обратите внимание на то, что когда первый раз открывается список, выделен сразу item - "Visa". После этого, не нажимаем на item "Visa", кликаем где-нибудь в области окна, после чего можем наблюдать, что метки "You selected" и "Data" заполняются данными с этого item-а, на который не нажимали. Можно пойти дальше и сразу установить какие-нибудь данные, в результате чего при щелчке на том же item, данные будут обновляться и этого видно не будет визуально.

Теперь моя ситуация. У меня компонент чата для ввода сообщения. Пользователь видит компонент с набором фраз. Выделяет его, чтобы посмотреть или случайно нажимает на кнопку "combo". В результате, при закрытии списка данные текущего item-а введутся в поле ввода даже если он не выберет ни одного пункта, что есть не очень-то хорошо в этом случае.

GBee
16.09.2009, 22:43
Сделайте первый элемент пустышкой :о) Хотя нет, в примере по ссылке обработчик на close, а вам раньше правильно советовали change (оно сработает только на действие юзера)