Как получить полную горизонтальную ширину в символах метки, кнопки, TextArea или TextBox? - PullRequest
3 голосов
/ 22 февраля 2010

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

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

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

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

Как видите, эта метка может содержать до 7 символов на горизонтальную линию (в данном случае AG)?Поэтому, если бы вы вызвали мой мнимый .getHorizontCharacterWidth () для этой метки, он вернул бы 7. Вопрос в том, как бы вы поступили с реализацией .getHor horizontalCharacterWidth ()?

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

Спасибо

Ответы [ 3 ]

3 голосов
/ 10 марта 2010

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

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

0 голосов
/ 22 февраля 2010

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

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

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

0 голосов
/ 22 февраля 2010

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

Текстовая область:

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

Ввод текста:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...