Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   ComboBox, ListEvent. (http://www.flasher.ru/forum/showthread.php?t=129947)

Касеал 14.09.2009 14:07

ComboBox, ListEvent.
 
Необходимо следующее:

Код AS3:

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

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

Если подписаться на это событие:
Код AS3:

myComboBox.addEventListener(ListEvent.CHANGE, event);

, то текст из уже установленного пункта можно будет получить, только если выбрать сначала другой.

Если на это:
Код AS3:

myComboBox.addEventListener(DropdownEvent.CLOSE, event);

, то текст будем получать даже когда никакой пункт не выбран, что само собой разумеется, исходя из типа события.

Как отловить событие нажатия именно на каком-нибудь пункте?
Код AS3:

myComboBox.addEventListener(ListEvent.ITEM_CLICK, event);

- вот это событие описано в документации, но оно не возникает почему-то.

lighto 14.09.2009 14:27

У комбо бокс есть параметры
если ты в комбо бокс выташил что то из БД иль ввел заранее в массиве
Код AS3:

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/lan.../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 (оно сработает только на действие юзера)


Часовой пояс GMT +4, время: 06:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.