Seroy
16.11.2009, 07:05
всем бодрого времени.
уже который день бьюсь над задачкой:
есть компонент ComboBox. Он editable, т.е. доступный для редактирования пользователем, в него вводятся значения (добавляются - нажатием кнопки Add), сортируются по алфавиту и удаляются - при пом. кнопки "Remove".
Код конечно не прелесть (особенно в части валидации ввода: :confused:), но все вроде работает, кроме одного... Никак не могу добиться, чтобы удалялось именно выбранное в списке значение, а не последнее в списке.
привожу код и прикрепляю файлы (может, кто увидит, в чем огрех):
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; // кол-во значений в списке
}
уже который день бьюсь над задачкой:
есть компонент ComboBox. Он editable, т.е. доступный для редактирования пользователем, в него вводятся значения (добавляются - нажатием кнопки Add), сортируются по алфавиту и удаляются - при пом. кнопки "Remove".
Код конечно не прелесть (особенно в части валидации ввода: :confused:), но все вроде работает, кроме одного... Никак не могу добиться, чтобы удалялось именно выбранное в списке значение, а не последнее в списке.
привожу код и прикрепляю файлы (может, кто увидит, в чем огрех):
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; // кол-во значений в списке
}