PDA

Просмотр полной версии : ComboBox+TextArea+XML


canabeo
18.12.2008, 16:12
Есть следующая проблема.
Имеется ComboBox с 4 пунктами. При нажатии на один из них в TextArea подгружаются данные из XML.
Вроде всё классно работает. Но. Из 4-х выпадающих пунктов только 3 нужны. В 4-м (он же первый в списке) просто фраза, приглашающая сделать выбор. При выборе её из списка вместо текста вылазит undefined, что вполне логично, но абсолютно не приемлимо. Как сделать нужный мне 2-й пункт по умолчанию первым?
Далее, текст который появляется должен иметь другой цвет. Я так и не допёр как его изменить. Обшарил весь "хелп", поменял цвета скроллинга, фона, рамку, а для текста так и не нашёл :( Помогите.
И ещё: текст набранный в XML выглядит как надо. Но в TextArea начинают вылазить лишние отступы. Как избавиться?

Исходник прилагается.

Жень Шень
18.12.2008, 21:00
Как сделать нужный мне 2-й пункт по умолчанию первым?
Может так?
function setup() {
chooseperson.labelField = "pname";
chooseperson.dataProvider = people;
chooseperson.selectedIndex= 1
chooseperson.addEventListener("change", Delegate.create(this, loadScreen));
}
Но я делаю немного по другому.
1. Закрываю список кнопкой с надписью "Выбери..."
2. Вешаю на неё метод open для списка.
Разумеется "Выбери..." не включать в список.
Но это дело вкуса

nOobCrafter
19.12.2008, 11:45
По поводу лишних отступов, недавно была такая же проблема, решили тут: http://www.flasher.ru/forum/showthread.php?t=118720&highlight=%E0%E1%E7%E0%F6%E0

Жень Шень
19.12.2008, 13:45
Еще такой вариант, сыроват правда, но работает:...
function setup() {
chooseperson.labelField = "pname";
chooseperson.dataProvider = people;
chooseperson.addEventListener("change", Delegate.create(this, loadScreen));
chooseperson.addEventListener("open", Delegate.create(this, loadScreen));
}
var flag= true
function loadScreen(evt:Object) {
var thisitem:Object = evt.target.selectedItem;
if (flag) {
chooseperson.removeItemAt(0);
flag = false;
}
ta.text = thisitem.desc;
ta.vPosition = 0;
bgcol.setRGB(thisitem.bgcolor);
}
...
Смысл - приглашение "Выберите раздел" появляется только раз.
Можно просто убить листенер "open", а не пользоваться флагом

silin
19.12.2008, 14:34
можно "Выберите раздел" совсем не пихать в датаПрвайдер
а повесить его как приглашение один раз
function setup() {
chooseperson.labelField = "pname";
chooseperson.dataProvider = people;
chooseperson.addEventListener("change", Delegate.create(this, loadScreen));
chooseperson.text="Выберите раздел";
}