Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   комбобокс выбрать строку незная её selectedIndex (http://www.flasher.ru/forum/showthread.php?t=138087)

lighto 30.03.2010 09:20

комбобокс выбрать строку незная её selectedIndex
 
В комбобоксе есть несколько строк
Как мне прокрутить комбобокс до заданной строки?

Т.е. к примеру если мне надо прокрутить комбо до 3-й позиции мне надо сделать так
combobox1.selectedIndex=2;

а если к примеру я не имею этого числа позиции но я знаю что в списке
присутствует слово Москва а какой по счету она стоит в списке мне неизвестно??

BeDLiNt 30.03.2010 09:36

Ищите в вашей коллекции элемент по нужному вам критерию и его индекс используйте для выделения.

lighto 30.03.2010 09:44

Пробовал но тогда он неставит нужную позицию а просто добавляет в коллекцию новый элемент, заменяя первый элемент...
тут выбираю нужный
Код AS3:

combobox1.selectedItem.name = "Москва"

тут пробую ставить.... но происходит не выбор, а замена
Код AS3:

combobox1.selectedIndex=comboNositel.selectedItem.id-1;


BeDLiNt 30.03.2010 09:52

Может быть вы и думаете что вы так делаете, но на самом деле в первой строчке вы изменяете проперти name у выделенного элемента. А во втором делаете selectedIndex равным id-шнику выделенного элемента минус один. Абсурд какой-то.

lighto 30.03.2010 10:02

ага... спасибо за пояснение... буду думать...

Добавлено через 1 час 13 минут
ай что то у мну ничего неполучаеться.... поиск этот...

Добавлено через 4 часа 24 минуты
Цитата:

Сообщение от BeDLiNt (Сообщение 896720)
Ищите в вашей коллекции элемент по нужному вам критерию

кто нить Знает как это делаеться? :o

oleg_tomenko 30.03.2010 14:58

В цикле проверяете каждый элемент списка на наличие некой строки, если совпало в какой-либо итерации, то индекс у вас будет равен i.

lighto 30.03.2010 15:31

Код AS3:

private function Dd():void
{       
for(var i=0;i<=nositel.length;i++)
{
if (nositel[name]=="Москва")
{       
combobox1.selectedIndex=i;
}
else{}}

как то так сделал... но неверно .... будем ишо смотреть мож кто подскажет как нада? nositel мой массив кде есть id и name...

oleg_tomenko 30.03.2010 15:53

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

lighto 30.03.2010 15:54

Все поправил работает
Код AS3:

private function Dd():void
{       
for(var i=0;i<=nositel.length;i++)
{
if (nositel[i].name=="Москва")
{       
combobox1.selectedIndex=i;
}
else{}}

Если кто ишо буит искать такое...
НО так ОНО недолжно быть ждолжна быть 1 команда это же флекс+as3 должно быть чтоб 1 строчкой.... Кто знает подскажите пожалуйста....

Zebestov 30.03.2010 15:56

i <= nositel.length
вот не найдет он твою Москву, и ляпнет ошибка! может все-таки просто "<"?

BeDLiNt 30.03.2010 15:57

Цитата:

Если кто ишо буит искать такое...
НО так ОНО недолжно быть ждолжна быть 1 команда это же флекс+as3 должно быть чтоб 1 строчкой.... Кто знает подскажите пожалуйста....
Копайте в сторону класса Dictionary и будет вам одной строчкой.

lighto 30.03.2010 16:03

опа а вот это верно если буит последним элементом ненайдет))) спасибо незаметил:quiet:

Zebestov 30.03.2010 16:08

Цитата:

Сообщение от lighto (Сообщение 896781)
опа а вот это верно если буит последним элементом ненайдет))) спасибо незаметил:quiet:

хм... да как раз если будет последним — найдет. а вот если не будет вовсе — вылезет за пределы массива. нет у массива элемента с номером(!), равным "длине". никогда.

lighto 30.03.2010 16:15

спасибо Zebestov, всегда готов учиться будем знать...

Elser 30.03.2010 21:16

вот Вам опытный образец для размышлений
Код AS3:

fontList = menuProperties.getChildByName("fontListS") as ComboBox;
var allFonts:Array = Font.enumerateFonts(true);
var fontData:DataProvider = new DataProvider();
fontList.dataProvider = fontData;
fontList.rowCount = 15;
allFonts.sortOn("fontName", Array.CASEINSENSITIVE);
var fontItem:Object;
for (var i in allFonts) {
        fontItem = {label:allFonts[i].fontName};
        fontData.addItem(fontItem);
        if (fontItem.label == "Arial") {
                fontList.selectedItem = fontItem;
        }
}
fontList.addEventListener(ComponentEvent.CHANGE, fontListHandler);



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

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