Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Advanced (http://www.flasher.ru/forum/forumdisplay.php?f=4)
-   -   Auto select line from TextArea (http://www.flasher.ru/forum/showthread.php?t=21544)

Agafonov 18.10.2001 16:34

Auto select line from TextArea
 
Народ, помогите!

Есть некая текстовая площадь, в котрой забиты строчки типа Data.UTC. Есть график в котором ось Х == Data.UTC
Соответственно, каждая точка графика соответствует определённому времени(Data.UTC)....

Задача: необходимо чтобы при выборе точки на графике подсвечивалась в TextArea строчка с соответствующим этой точке Data.UTC....

Кто знает подскажите!!!...
PLZ!

C2Plus 18.10.2001 19:46

когда строишь график, запиши в каждую точку какая именно запись Data ей соответствует, потом при выборе этой точки ты будешь знать что именно тебе подсвечивать, а это уже можно сделать разными способами.

Главная идея - пусть точка знает откуда она взялась, а не думает что ее в капусте нашли. ;)

C2Plus 19.10.2001 13:08

ну коль подсвечивать, тогда рекомендую сделать не текстовое поле, а упорядоченый список. Примерная схема такова:

1 делаешь мувик, в нем динамическое текстовое(по тексту Text_Field) поле на одну строку.
2 создаешь в нем второй кадр с подсвеченой строкой.
3 в первом кадре создаешь функции:
function On(){
gotoAndStop(2);
}
function Off(){
gotoAndStop(1);
}
function SetValue(val){
Text_Field = Val;
}

4 не вставляя этот мувик в сцену, делаешь его экспортируемым - Library->moviClip->LeftClik->Linkage->export/ там пишешь имя (например ListItem) без кавычек.

5 когда строешь график, создавай для каждой точки экземляр ListItem(примерный способ):

List = new Array();

Points - количество точек

YPos = 0; - откуда начнется список.

for (i=0; i<Points; i++){
ItemName = "item" add i /// новое имя для записи
this.attachMovie("ListItem", ItemName, i+10);
List.push(ItemName) /// запомним имя элемента списка на будущее.
///// Создаем точку и в процессе записываем в нее путь к ListItem:
Point.SetOwner(eval(ItemName)._target) /// функция SetOwner должна просто запоминать то, что ей возвращают в текстовую строку.
///
eval(ItemName).SetValue(э... что там у тебя?) ///
/// здесь тебе нужно поставить новый элемент в конец списка
eval(ItemName)._Y = YPos;
YPos += 20 /// 20 - это условно, высота элемента списка.
eval(ItemName)._X = 100; // куда ставить по Х.
}

Только что мы создали список значений, привязанных к графику.

Теперь посмотрим что нужно сделать когда юзер тыкает в точку:
в точке на кнопке нужно прописать следующее:
on (press){// условно, можно и на другое событие.
eval(Owner).On(); /// Owner - записывается в функции SetOwner(), ее значение - путь к элементу списка со значением текущей точки.
}

так мы включаем подсветку.

Теперь ее нужно будет выключить, и на всякий случай, выключим все:

function HideAll(){ /// должна быть там же, где мы создовали элементы списка.

for (i = 0; i<=List.length; i++){
eval(list[i]).Off() /// помнишь, мы записывали в массив при создании? Вот он и пригодился...
}
}


Когда нужно погасить выделение, вызываем функцию HideAll, и все.

Надеюсь, я не запутал тебя еще больше... Однако, чтобы это заработало, тебе нужно это все понять и написать самому. Просто скопировать не получится, потому, что у меня к сожалению нет времени проверить это все на ошибки в синтаксисе, но логика правильная и должна работать.

Barmaglot 19.10.2001 18:50

Если строки отсортировани по возрастанию (убыванию) и идут с равным шагом то номер строки можно вычислить зная координату x щелчка мышки. Что-то навроде этого:

Если по возрастанию
N=(x-x_min)*N_max/(x_max-x_min);

Если по убыванию
N=(x_max-x)*N_max/(x_max-x_min);


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

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