Форум 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)
-   -   Якори в TextArea по ключевым словам (http://www.flasher.ru/forum/showthread.php?t=111637)

marat_sa 04.05.2008 15:22

Якори в TextArea по ключевым словам
 
Добрый день. Возможно ли в компоненте TextArea реализовать переход на определенную строку по содержимому, а не только по номеру строки, или хоть как-то связать их между собой. Был реализован метод с массивом "якорей"-индексов строк, но экземпляр текстАрии может изменять пропорции, длина строк тоже изменяется, и соответственно, сбиваются индексы...

chingachgoog 04.05.2008 16:07

String.indexOf()

etc 04.05.2008 16:38

Цитата:

Сообщение от chingachgoog (Сообщение 736985)
String.indexOf()

Развите мысль, пожалуйста.

marat_sa 04.05.2008 16:52

Я не точно выразился, нужен не просто поиск, а именно прокрутка компонента на нужное место в тексте.

chingachgoog 04.05.2008 18:15

А, нужно еще и получить номер строки с найденным фрагментом?
Это просто. Бъете текст пополам String.indexOf()
Вставляете в текстовое поле только первую половину текста.
TextField.maxscroll запоминаете номер строки
Вставляете вторую половину текста.
TextField.scroll перематываете на нужное место.

PS я не знаю как там в дефолтном компоненте адобовском сделано, т.к. компоненты я делаю сам и вам советую.

iNils 04.05.2008 18:31

2 chingachgoog: если половина текста закончилось половиной слова, то при добавлении второй половины, слово вполне может перескочить на строчку ниже.

Molecula 04.05.2008 19:15

Самое простое:
ta - TextArea;
b - MovieClip
q - Input TextField, сюда пишем слово или сочетание слов, которое хотим найти;
Код:

ta.setSize(200, 100);
ta.text = "The following example creates a window and then defines a complete handler that resizes the window to fit its contents. It uses the content property to reference the width of the window's movie clip content. You drag a Window component from the Components panel to the current document's library, and then add the following code to Frame 1: Returns the floor of the number or expression specified in the parameter x. The floor is the closest integer that is less than or equal to the specified number or expression."
b.onPress = function(){
var index = ta.text.indexOf(q.text);
var a:Number = (Math.floor(ta.text.length/ta.maxVPosition));
var cur:Number = Math.floor(index/a);
ta.vPosition = cur;
Selection.setFocus("ta");
Selection.setSelection(index, index+q.length);
}


chingachgoog 04.05.2008 21:38

Цитата:

Сообщение от iNils (Сообщение 737067)
2 chingachgoog: если половина текста закончилось половиной слова, то при добавлении второй половины, слово вполне может перескочить на строчку ниже.

Это уже легко решаемые детали. :)
Главное человеку понять принцип, так сказать ноу-хау.

marat_sa 05.05.2008 13:21

Всем спасибо, выстроил-таки, на основе ответов, функцию для корректного перехода и скроллинга по ключевым словам! Вроде даже работает )))


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

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