2010-02-22 11 views
3

Этикетки, кнопки, TextArea и TextBox (сокращенно LBTT с этого момента) способны отображать строки текста. Есть ли способ взглянуть на объект LBTT с уже установленным размером и определить количество символов, которое может соответствовать каждой строке данного объекта.Как получить общую ширину горизонтали в символах метки, кнопки, TextArea или TextBox?

Например, скажем, что у меня есть textArea, который исправлен по своей ширине. Есть ли способ задать этот объект textArea, сколько символов он может удерживать по горизонтали? Концептуально, что-то вроде метода .getHorizontalCharacterWidth()?

Вот мой «визуальный» пример обозначения ascii ascii. «-» и «|» должны представлять вертикальные и горизонтальные края метки, соответственно.

------- 
|  | 
|ABCDEFG| 
|  | 
------- 

Как вы можете видеть, эта метка может содержать до 7 символов на горизонтальной линии (в данном случае A-G)? Поэтому, если вы назовете мою мнимую .getHorizontalCharacterWidth() на этой метке, она вернет 7. Вопрос в том, как бы вы начали реализовывать .getHorizontalCharacterWidth()?

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

Спасибо

ответ

3

Да, если вы говорите, что текстовая область использует моноширинный шрифт, то aTextArea.getCharacterWidth() должен указывать количество символов, доступных по горизонтали. Хотя он вернет только html-свойство cols, которое возвращает ширину по умолчанию браузера (или все, что вы установили для использования aTextArea.setCharacterWidth()), игнорируя указанную ширину CSS.

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

0

В двух случаях это уже существует в простом виде атрибута HTML.

Область текста:

<textarea name="" cols="10" rows=""></textarea> 

ввода текста:

<input name="" type="text" size="10" /> 

Более общие случаи, метки и кнопки, гораздо сложнее. Например, символ «i» намного более узкий, чем «m». Если вы ограничиваете использование моноширинного шрифта, вам становится намного легче, но это, вероятно, не то, что вы ищете.

0

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

Я спросил similar question некоторое время назад, и в основном ширина не может быть определена.

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