PDA

Просмотр полной версии : Перенос по словам - реально ли?


CaXaP
13.06.2008, 13:17
Здравствуйте)

У меня есть текст бокс, куда из БД подгружаются фразы (1 или 2 слова).
Текстбоксы не резиновые (размеры статичные).

И мне нужно чтобы перенос в них осуществлялся по словам, а не по буквам х_Х

Сейчас у меня может получиться такое:
MARBL
E
т.е. 1 буква перенеслась на след. строку.

Аналогично фраза из 2 слов также переносится криво
REGULA
R
CARPET
первое слово на 1 и 2 строках, второе на третей.

Вот мне бы сделать так, чтобы все слова переносились только целиком. Естественно, можно в БД это всё в виде штмл загнать и вручную расставить переносы, но для большой БД это нереально.

Есть ли какое-нибудь свойство для установки переноса по словам? Или мб простой код для реализации свойства?

Заранее спасибо)

etc
13.06.2008, 13:38
Текстовые поля умеют переносить слова.

wvxvw
13.06.2008, 14:09
TextField.wordWrap = true/false

CaXaP
13.06.2008, 17:13
Я и писал, что с wordWrap получается плохо, вот смотрите:
http://imajr.com/delete.bmp-1065990

Переносится 1 буква в конце - некрасиво... Мне надо чтоб переносилось либо всё слово, либо вообще ничего не переносилось)

iNils
13.06.2008, 17:26
CaXaP, на форуме есть возможность выкладывать файлы, поэтому не надо класть туда, где валяется куча лишнего хлама.
Из вашего скриншота не видно размеры самого поля и его настройки.

CaXaP
13.06.2008, 19:42
А как тут выкладывать картинки? (ссылку тегом IMG не поставить - там защита какаято :)))
Да и на мелком скрине видно хорошо, что переносится 1 буква от конца слова...

Размеры поля маленькие (без autoSize) - где то 30 на 20 (шрифт тоже мелкий).
autoSize использовать нельзя (поле фикисирвоанное должно быть)...
На скрине хорошо видно, что переносится 1 буква в конце слова...

Код, инициализирующий текстбокс:
opt[i][0] = mc_options.createTextField("txt"+i,1000+i,kX*(7+i*40),kY*5-4,36,30);
opt[i][0].autoSize = false;
opt[i][0].border = false;
opt[i][0].multiline = true;
opt[i][0].wordWrap = true;
opt[i][0].setNewTextFormat(new TextFormat("Franklin Gothic Demi Cond", 9, 0x000000, false, false, null, null, null, "center"));
opt[i][0].wordWrap = true;

†‡Paladin‡†
13.06.2008, 19:43
Я и писал, что с wordWrap получается плохо, вот смотрите:
http://imajr.com/delete.bmp-1065990

Переносится 1 буква в конце - некрасиво... Мне надо чтоб переносилось либо всё слово, либо вообще ничего не переносилось)

Че будеш делать, когда слово будет больше ширины текстового поля?

wvxvw
13.06.2008, 21:21
Ну... в такой ситуации даж нинаю... в голову приходит только такое:
Есть модуль к QuarkExpress (мб и к InDesign), который умеет расставлять гибкие переносы (флеш все равно их не понимает, но, сами символы потом можно будет заменить на какой-то другой, который невозможно отобразить в текстовом поле) ну и после замены текста (с отключенным wordWrap) смотреть разницу между реальной шириной текста и шириной текстового поля и пытаться заменить этот символ обратно на гибкий перенос (shy)... Но как-то мне это все кажется черз чур для такой задачи...

ЗЫ. Тему надо было называть "Перенос по слогам".

CaXaP
13.06.2008, 21:54
Че будеш делать, когда слово будет больше ширины текстового поля?
Скрывать оставшуюся часть слова (как делается в большинстве текстовых редакторов (в том же Flash CS3, например)).

Так то есть одно решение - принимать текст из базы и все пробелы между словами заменять на тег <br>, надеясь что макс. длина фразы будет 2 слова.
Но это танцы с бубном, да и негибко... Всё же надеюсь есть способ попроще :)

iNils
13.06.2008, 21:58
Скрывать оставшуюся часть слова (как делается в большинстве текстовых редакторов (в том же Flash CS3, например)).Отключите автосайз. А во всех редакторах есть скроллинг, поэтому и не видно.