Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   ComboBox+TextArea+XML (http://www.flasher.ru/forum/showthread.php?t=119355)

canabeo 18.12.2008 16:12

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

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

Жень Шень 18.12.2008 21:00

Цитата:

Сообщение от canabeo (Сообщение 784703)
Как сделать нужный мне 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/showthre...E1%E7%E0%F6%E0

Жень Шень 19.12.2008 13:45

Еще такой вариант, сыроват правда, но работает:
Код AS1/AS2:

...
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

можно "Выберите раздел" совсем не пихать в датаПрвайдер
а повесить его как приглашение один раз
Код AS1/AS2:

function setup() {
  chooseperson.labelField = "pname";
  chooseperson.dataProvider = people;
  chooseperson.addEventListener("change", Delegate.create(this, loadScreen));
  chooseperson.text="Выберите раздел";
}



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

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