![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2008
Адрес: пока еще здесь
Сообщений: 198
|
всем бодрого времени.
уже который день бьюсь над задачкой: есть компонент ComboBox. Он editable, т.е. доступный для редактирования пользователем, в него вводятся значения (добавляются - нажатием кнопки Add), сортируются по алфавиту и удаляются - при пом. кнопки "Remove". Код конечно не прелесть (особенно в части валидации ввода: ), но все вроде работает, кроме одного... Никак не могу добиться, чтобы удалялось именно выбранное в списке значение, а не последнее в списке. привожу код и прикрепляю файлы (может, кто увидит, в чем огрех): my_cb.move(10, 10); clear_button.move(120, 10); add_button.move(10, 45); my_cb.editable="true";// сам компонент imy_cb=0; // переменная - индекс значений списка icb_val='----'; // переменная - значения списка // Create dataprovider. var myDP_array:Array = new Array(); myDP_array.push({data:imy_cb, label:icb_val}); //myDP_array.push({data:2, label:"Second Item"}); my_cb.dataProvider = myDP_array; // Define event listener object. /*var clearListener:Object = new Object(); clearListener.click = function(evt1_obj:Object){ for(j=0; j<q1m; j++){ var leo:String=j+"\n"+_root.my_cb.text; if(leo==_global.yak){ _root.imy_cb=j; _root.my_cb.removeItemAt(_root.imy_cb); _root.imy_cb--; trace("fe"); } } trace(imy_cb); trace(j); trace(leo); trace(yak); _root.my_cb.sortItems(upperCaseFunc); }*/ // Define event listener object. Функция удаления значения из списка var clearListener:Object = new Object(); clearListener.click = function(evt1_obj:Object){ if(icb_val<>'----'){ my_cb.removeItemAt(imy_cb); imy_cb-=1; my_cb.sortItems(upperCaseFunc); } trace(imy_cb); } // Add Listener. clear_button.addEventListener("click", clearListener); // сортировка массива my_cb.sortItems(upperCaseFunc); function upperCaseFunc(a, b){ return a.label.toUpperCase() > b.label.toUpperCase(); } function add_button_clicked() { _global.piu=1; // допустимый первый символ ввода if((my_cb.text!= '')&&(icb_val<> undefined)&&((my_cb.text.charAt(0)== 'А')||(my_cb.text.charAt(0)== 'а')||(my_cb.text.charAt(0)== 'Б')||(my_cb.text.charAt(0)== 'б')||(my_cb.text.charAt(0)== 'В')||(my_cb.text.charAt(0)== 'в')||(my_cb.text.charAt(0)== 'Г')||(my_cb.text.charAt(0)== 'г')||(my_cb.text.charAt(0)== 'Д')||(my_cb.text.charAt(0)== 'д')||(my_cb.text.charAt(0)== 'Е')||(my_cb.text.charAt(0)== 'е')||(my_cb.text.charAt(0)== 'Ё')||(my_cb.text.charAt(0)== 'ё')||(my_cb.text.charAt(0)== 'Ж')||(my_cb.text.charAt(0)== 'ж')||(my_cb.text.charAt(0)== 'З')||(my_cb.text.charAt(0)== 'з')||(my_cb.text.charAt(0)== 'И')||(my_cb.text.charAt(0)== 'и')||(my_cb.text.charAt(0)== 'Й')||(my_cb.text.charAt(0)== 'й')||(my_cb.text.charAt(0)== 'К')||(my_cb.text.charAt(0)== 'к')||(my_cb.text.charAt(0)== 'Л')||(my_cb.text.charAt(0)== 'л')||(my_cb.text.charAt(0)== 'М')||(my_cb.text.charAt(0)== 'м')||(my_cb.text.charAt(0)== 'Н')||(my_cb.text.charAt(0)== 'н')||(my_cb.text.charAt(0)== 'О')||(my_cb.text.charAt(0)== 'о')||(my_cb.text.charAt(0)== 'П')||(my_cb.text.charAt(0)== 'п')||(my_cb.text.charAt(0)== 'Р')||(my_cb.text.charAt(0)== 'р')||(my_cb.text.charAt(0)== 'С')||(my_cb.text.charAt(0)== 'с')||(my_cb.text.charAt(0)== 'Т')||(my_cb.text.charAt(0)== 'т')||(my_cb.text.charAt(0)== 'У')||(my_cb.text.charAt(0)== 'у')||(my_cb.text.charAt(0)== 'Ф')||(my_cb.text.charAt(0)== 'ф')||(my_cb.text.charAt(0)== 'Х')||(my_cb.text.charAt(0)== 'х')||(my_cb.text.charAt(0)== 'Ц')||(my_cb.text.charAt(0)== 'ц')||(my_cb.text.charAt(0)== 'Ч')||(my_cb.text.charAt(0)== 'ч')||(my_cb.text.charAt(0)== 'Ш')||(my_cb.text.charAt(0)== 'ш')||(my_cb.text.charAt(0)== 'Щ')||(my_cb.text.charAt(0)== 'щ')||(my_cb.text.charAt(0)== 'Ы')||(my_cb.text.charAt(0)== 'ы')||(my_cb.text.charAt(0)== 'Э')||(my_cb.text.charAt(0)== 'э')||(my_cb.text.charAt(0)== 'Ю')||(my_cb.text.charAt(0)== 'ю')||(my_cb.text.charAt(0)== 'Я')||(my_cb.text.charAt(0)== 'я'))){ imy_cb+=1; my_cb.addItem({data:imy_cb, label:icb_val}); // сортировка массива my_cb.sortItems(upperCaseFunc); } //trace(my_cb.text); } add_button.addEventListener("click", add_button_clicked); // трассировка выделения значения из списка var cbListener:Object = new Object(); cbListener.change = function(evt_obj:Object) { var item_obj:Object = my_cb.selectedItem; var ij:String; for (ij in item_obj) { //trace(item_obj[ij]); _global.yak=item_obj[ij]; } trace(imy_cb); }; my_cb.addEventListener("change", cbListener); this.onEnterFrame=function(){ icb_val= my_cb.text; my_cb.restrict="a-zA-Z\\'\\,\\.\\А-Яа-я\u0020\u0401\u0451"; // допустимые символы в поле q1m= my_cb.length; // кол-во значений в списке } |
|
|||||
|
listener
|
1. непонятно зачем вам onEnterFrame.
2. километровой длины условие if() меня сильно огорчило. 3. исходник выложен в формате CS4, не смог его открыть, у меня восьмой флэш. 4. а теперь по существу. вы удаляете итем c номером imy_cb, так? эта переменная у вас встречается в коде еще: вначале, где вы присваиваете ей значение 0, в обработчике add_button_clicked(), где вы евеличиваете ее на единицу. у меня сложилось впечатление, что эта переменная у вас всегда равна номеру последнего добавленного итема. в обработчике change вам нужно было просто написать imy_cb=my_cb.selectedIndex и все. или вообще сделать так my_cb.removeItemAt(my_cb.selectedIndex); |
|
|||||
|
Регистрация: Jun 2008
Адрес: пока еще здесь
Сообщений: 198
|
Цитата:
1) по поводу onEnterFrame - действительно, в сущности не нужно. Спасибо ![]() 2) по поводу условия - я так и сяк бился - решил, что вроде бы в AS 2 нет регулярных выражений, а restrict - только для поля годится (не получилось с ним никак для одного символа). Был бы весьма признателен, если б вы подсказали, как тут можно разрулить потолковей. ![]() |
|
|||||
|
listener
|
ограничить набор вводимых символов в поле комбобокса можно так:
my_cb.text_mc.restrict = "А-Я\\а-я"; ну, или что вам там нужно. ЗЫ Цитата:
![]() Последний раз редактировалось alexcon314; 16.11.2009 в 11:34. |
|
|||||
|
Регистрация: Jun 2008
Адрес: пока еще здесь
Сообщений: 198
|
Цитата:
Нужно было в особинку - для первого символа поля (чтобы апостроф или дефис не ввели). Но вся равно - пасибо) ![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|