Сообщение создано: 10. 08. 2011 [21:01]
|
punk
Василий Петров
Создатель темы
Зарегистрирован(а) с: 09.05.2011
Сообщения: 57
|
Доброго времени суток.
Потребовался мне виджет типа список, значением которого является не сам выбранный элемент, а его индекс. То есть меняется индекс - меняется отображаемое значение и наоборот (как например в protool). Ничего по этому поводу не нашел. Пришлось писать обработку. На коленке сделал примерно так:
ev_cur = ev_rez = "";
off=0;
while(true)
{
ev_cur=Special.FLibSYS.strParse(event,0,"\n",off);
if( ev_cur == "" ) break;
if( ev_cur == "ws_CombChange") //при изменении значения подбираем индекс под него:
{
sarr=items.split("\n");//разбираем элементы в массив
cccc=0;
aaa=true;
while(aaa) // в цикле ищем подходящий
{
itm1=sarr.shift();
vl1=value;
if (cccc>500) aaa=false; //костыль на случай если не нашли, при отладке срабатывал, потом вроде перестал
if (itm1 == vl1) {index=cccc; aaa=false;}; //когда нашли - меняем индекс
cccc++;
}
}
else ev_rez += (ev_cur+"\n");
}
event=ev_rez;
//если вдруг изменился индекс - меняем значение
sss=items.split("\n")[index]; //index - дополнительный параметр виджета
value=sss;
На мой взгляд поиск перебором несколько неоптимален. Есть ли более прямое решение?
|
Сообщение создано: 10. 08. 2011 [21:39]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"punk" wrote:
На мой взгляд поиск перебором несколько неоптимален. Есть ли более прямое решение?
RegExp используем и всё становится предельно прямо.
Learn, learn and learn better than work, work and work.
|