PDA

Просмотр полной версии : вопрос по текстфилдам


s_u_m_p
09.06.2004, 18:48
вопрос:

допусти есть текстфилд фиксированной длины и ширины и мультилайн, как разобрать его по строчкам?

s_u_m_p
09.06.2004, 22:20
не мужики серьезно?

есть текст филд, туда влезает например 3 строчки, как узнать
что из tf.text находится в каждой строчке? просто нужно очень !!!

Nucer
09.06.2004, 22:43
На ум призодят два глупых способа:
1) Самому следить за количеством строчек, добавляя где надо "\r\n" или newline.
2) Заранее посчитать, водя пальцем по монитору, сколько символов влезает в на одну строчку :)
Самому будет интересно узнать, если кто-нибудь предложит универсальный нормальный способ

s_u_m_p
10.06.2004, 01:04
Оригинал написал(а) Nucer
На ум призодят два глупых способа:
1) Самому следить за количеством строчек, добавляя где надо "\r\n" или newline.
2) Заранее посчитать, водя пальцем по монитору, сколько символов влезает в на одну строчку :)
Самому будет интересно узнать, если кто-нибудь предложит универсальный нормальный способ

1. уже делал, но невсегда работает, так как размер буквы по _х не фиксирован, соответственно, бывают ляпы

2. то же самое что и 1, потом очень много тектфилдов, если на каждый еще функцию вешать...

хотелось бы чтонить поуниверсальней...

Dindin
12.06.2004, 00:40
использовать RegExp - в качестве стоп-символов - \r и \n

Dindin
12.06.2004, 00:43
PS класс RegExp можно взять тут (http://www.jurjans.lv/flash/regexp.html)

s_u_m_p
12.06.2004, 01:28
Динкин Дим извения в английском не силен...

я так понял это клас что типа posix regular expressions только для флаш ???

тогда извени, я не знаю как они мне могут помочь...

З.Ы. не мог бы мне оп аське объяснить нужно просто труба...
uin 18706810

Dindin
12.06.2004, 13:18
Вопрос:
есть текст филд, туда влезает например 3 строчки, как узнать
что из tf.text находится в каждой строчке?
Ответ: разбываем текст содержащия в текстовом поле на несколько объектов типа String использовав при этом класс RegExp. Не секрет, что символами конца строки являются \n(конец строки) или \r(возврат каретки). поэтому в нашем случае мы просто ищем эти символы. После чего, закладываем результат рзделения текстового поля в массив, в котором каждый элемент - отдельная строчка.

Вот пример


ЗЫ Не ДиМ, а ДиН ;)

s_u_m_p
12.06.2004, 20:42
Динкин Дин, но ты меня не понял, я мог поделить строку по \r \n и без RegExp, мне просто не это нужно....

есть такой язык дебильный иврит, у него дебильнейшая особенность право-лево направление текста, вот в 2004, это для меня реальная проблема, в МХ я пользовался зеркальными шрифтами и флипом текстфилда

в 2004 такой трюк проканывает только с 2 шрифтами измоей коллекции, но есть другой вариант что 2004 прекрасно работает с юникодными шрифтами, но не берет направление...

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

Dindin
12.06.2004, 23:02
Ковырялся, ковырялся - сделал что-то вроде этого... Багов, конечно, море - фокус ввода не там где нужно, собственно говоря, можно только вводить символы и удалять их бэкспейсом. Но хоть кое-что =)

s_u_m_p
12.06.2004, 23:23
Диндиныч спасибо :) за соучастие, но это опять не то!

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

tf.text =_global.getLabel (21);

_global.getLabel = function (s) {
var output = "";
var string = _global.lb [s][_global.lang];
if (_global.lang == undefined || global.lang == "he") {
for (i = string.length; i >0; i--) {
output += string.substr (i-1,1);
}
} else {
output = string;
}
return output;
}

вот но проблема та же, как и в твоем примере, что когда строчек становиться больше чем одна, верхня (которая должна быть там) идет вниз...

З.Ы. я пробовал, добавлять по символу в текстфилд и смотреть TextField.maxscroll.... но это на маленькие стринги, а если большие текстблоки... можно конечно как прелоадер выдать :)

Dindin
13.06.2004, 00:25
Э-ээ я похоже я совсем запутался... Может нужно это - ?

Jlekc
13.06.2004, 15:07
Народ мож я не прочитал все посты и буду повторяться, извенити

Ща релизровавал парсинг текста на вставку смайлов(( бредовая робота, компонентом пока не поделюсь, не готов

Для определения строк ислользовал myTextFormat.getTextExtent() возвращает параметры текста(высоту, ширину etc).
Процес простой заганяеш в буферное поле(размером с оригинал) по одному слову, проверяеш увеличение текста, если увеличилась произошол переход на новую строку, определьть чо за слово, думаю е проблема будет.
Недостаток: не работает с хтмл-тагами, пришлось все переделать, определять параметры каждого символа, блятьство но нуна сделать