PDA

Просмотр полной версии : Красивый курсор в input TextField


Хемуль
17.10.2006, 13:48
Клиент заказал небольшой флеш-редактор. По примеру Windows Paint есть возможность размещать в рамках рабочей зоны текстовые поля (input TextField). Но клиент хочет большего. Он желает видеть не обычный тоненький курсор в конце, а жирный и красивый. Хотя бы просто прямоугольник потолще. Я лично додумался только до того, чтобы в конец введённого текста цеплять символ, который представляет собой прямоугольник, а потом на setInterval "повесить" изменение цвета этого последнего символа с помощью обьекта TextFormat. Но, насколько я понимаю, после этого последнего прямоугольного символа будет мигать ещё и обычный тоненький текстовый курсор.
Поэтому, вопросы:
1. Есть ли возможность скрыть текстовый курсор? Если есть, то как?
2. Есть ли возможность получить координаты отдельной буквы (верхнего левого угла ограничивающего прямоугольника) в текстовом поле ввода? Если есть, то как?

Кто-нибудь может помочь? Или, возможно, есть альтернативные решения?

PS:
Принципиально важно найти решение, которое подходит для 7-го плеера.

Nirth
17.10.2006, 13:56
Насколько я помню, в 7ом плеере, нифига не работают методы взятия размеров текста ( хотя попробуй getTextExtend).

Есть еще одна дикая идея, это сделать, текстовое поле динамическим, а не input, и когда, поле в фокусе, просто читать введеный символ.

В этом случае, точно не будет никаких, багов с конфликтами курсора, но придется погемороится с выделением.

Хемуль
17.10.2006, 14:01
2 Nirth:
Да, спасибо... Метод действительно "дубовый", но надёжный, как те старые осциллографы, что стоят у нас на факультете. ^_^ Может и рассмотрю этот метод... Клиент действительно хочет жирный курсор. ^_^ Что ж с него возьмёшь?

etc
17.10.2006, 14:10
Что ж с него возьмёшь?
Отказать.

Хемуль
17.10.2006, 14:14
2 __etc:
Ну зачем сразу отказывать? Можно найти компромисс, который будет не полностью удовлетворять клиента и в то же время от разработчика не потребует много времени на выполнение. ^_^ Хотя, не исключено, что в данном случае откажем. Зависит от дедлайна...

etc
17.10.2006, 14:18
Эта задача должна оговариваться отдельно. Если вы можете это реализовать (а это наверняка потребует много времени), то добавляйте в счёт за работу энную сумму.
Если эта задача, по совокупности, занимает большую часть времени всей разработки (а в плане функциональности — не добавляет ничего), то не имеет смысла делать.

Wolsh
17.10.2006, 14:53
а обновлять введенную строку, добавляя-удаляя спецсимвол прямоугольничка в конце? Сделать ембедфонт с таким символом и делов.

etc
17.10.2006, 14:57
а обновлять введенную строку, добавляя-удаляя спецсимвол прямоугольничка в конце? Сделать ембедфонт с таким символом и делов.
Wolsh, а курсор как убирать будешь? А если нужно переставить курсор в начало или в середину слова?

Хемуль
17.10.2006, 15:07
а обновлять введенную строку, добавляя-удаляя спецсимвол прямоугольничка в конце? Сделать ембедфонт с таким символом и делов.
Вы невнимательно читали первое сообщение в теме. ^_^

Wolsh
17.10.2006, 15:09
Речь ведь идет именно о "прямоугольничке в конце", так пишет Хемуль.
Попробуйте? В Ариал это символы :
9612 - смещен влево
9616 - смещен вправо
9608 - смещен влево но очень широкий

Wolsh
17.10.2006, 15:11
а, сорри. А может всёже попробовать :) 9616
Насколько я помню (но могу ошибаться), есть возможность задавать стиль - в том числе просвет между буквами - для фрагмента текста. Или это только в восьмёрке?

wvxvw
17.10.2006, 15:51
Солидарен с __etc время и нервы потраченные на то, чтобы объяснить заказчику, что по техническим причинам не представляется возможным выполнить его просьбу - мелочь в сравнении с головной болью от выполнения этой самой просьбы %)
Но если просто самому очень хочется заморочится, то я наверное сделал бы так: положил динамик поле над инпутом, запретил бы в нем выделение, включил фон (чтобы нижнее поле не было видно) и все операции с нижним инпутом отображал бы в верхнем... Но вообще, я не люблю когда юзеру навязывают непривычные элементы управления. С точки зрения восприятия интерфейса на интуитивном уровне это только вредит.

Хемуль
17.10.2006, 16:14
2 wvxvw:
Да я понимаю... Просто вроде как в ТЗ этого не было, но когда клиент давал эскиз дизайна для интерфейса, в тестовом поле у него был жирный курсор...
Ладно, разберёмся...

Nirth
18.10.2006, 03:17
Насколько я знаю, даже в приложениях на С++ не меняют курсоры, по крайней мере ниче на СШарп\Яве подобного не видел, можно использовать как аргументацию. Что это на на нижнем уровне системы.

Wolsh
18.10.2006, 12:39
Попробовал всяко... Получается похоже, но не то. Пока видится самое реальное - моноширинный шрифт и расчет координат перекрывающего курсор клипа. Если скроллинга не будет, в принципе не сложно. Со скроллингом сложнее, но тоже вероятно.

Wolsh
18.10.2006, 12:40
Ну и как вариант - написать текстфилд самому и слушать нажатия клавиш :) там рисуй какие хочешь курсоры

Хемуль
18.10.2006, 13:05
2 Nirth:
О, неплохо... Спасибо. ^_^

2 Wolsh:
Угу... Товарищ Nirth уже это предлагал. Наверное, самый надёжный способ...

Wolsh
18.10.2006, 13:19
Хемуль, если у тебя что-нибудь получится (кроме отмазки от заказчика), ты уж поделись. Обожаю извращаться над стандартами