|
Определение ширины textbox
|
|||
---|---|---|---|
#18+
Требуется подобрать размер шрифта. для этого использую textbox: Thisform.text1.autosize=.t. Thisform.text1.value='ТАБЕЛЬНЫЙ' for _fontsize=13 to 6 step -1 Thisform.text1.fontsize=_fontsize Thisform.text1.refresh endfor получается вот так: 13 ТАБЕЛЬНЫЙ 11687 12 ТАБЕЛЬНЫЙ 11687 11 ТАБЕЛЬНЫЙ 10197 10 ТАБЕЛЬНЫЙ 10197 9 ТАБЕЛЬНЫЙ 8135 8 ТАБЕЛЬНЫЙ 8135 7 ТАБЕЛЬНЫЙ 8135 6 ТАБЕЛЬНЫЙ 8135 Первая колонка fontsize Вторая тестовое слово Третья результат теста При этом по картинка на самом деле такая как показывают результаты, т.е. шрифт не меняется. Как еще можно определить длину поля? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 17:33 |
|
Определение ширины textbox
|
|||
---|---|---|---|
#18+
ВладимирМ, пробовал - погрешность большая. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 18:32 |
|
Определение ширины textbox
|
|||
---|---|---|---|
#18+
glamisпробовал - погрешность большая. По сравнению с чем? И что надо получить в результате? Почему не устраивает автоподбор ширины самого объекта? Кстати, если есть форма, то ширину текста можно определить при помощи метода Метод TextWidth ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2011, 19:48 |
|
Определение ширины textbox
|
|||
---|---|---|---|
#18+
ВладимирМ, Мне нужно построить отчет. Для этого мне надо определить ширину полей. Программа просчитывает данные, заголовки и отрисовывает колонки отчета. Средняя ширина символа подходит для длинных строк Хотя для них это не принципиально а вот для коротких табельный номер, фамилия - возникают проблемы. Попробовал textbox - результат тот же: для разных размеров шрифтов ширина одинакова - как я и писал. Хотя если на форме отрисовать label вручную, то все получается. А программно нет. Пардон, я скривил - я использую не text а label. Но это без разницы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 08:52 |
|
Определение ширины textbox
|
|||
---|---|---|---|
#18+
glamis, попробуй сделать в конце ThisForm.Label.Refresh() или ThisForm.Refresh() ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 09:13 |
|
Определение ширины textbox
|
|||
---|---|---|---|
#18+
Dima T, делал. само сабой ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 09:28 |
|
Определение ширины textbox
|
|||
---|---|---|---|
#18+
glamisА программно нет. Программно надо перед присваиванием значения Value, сделать контрол видимым Thisform.text1.visible = .t. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 10:01 |
|
Определение ширины textbox
|
|||
---|---|---|---|
#18+
Дело в том, что FoxPro - однопоточное приложение. Т.е. он не может выполнять некие действия "паралельно". В данном случае, действия по изменению реквизитов объекта и действия по его отображению. Необходимо явным образом "пропихнуть" действие по отображению (отрисовке) изменений объекта. Для этого существует команда DOEVENTS Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Теперь насчет собственно отчета. По большому счету - то, чем Вы занимаетесь, бессмысленно. Если речь идет о печати на утвержденных формах отчетности или на готовых бланках, то менять ширину столбцов Вы не можете, поскольку в этом случае "поплывут" соседние столбцы. Подгонять размер шрифта под фиксированную ширину столбца, в принципе, возможно, только опять же, не очень нужно. В большинстве случаев и так все поместится, а в тех редких случаях, когда тем не менее не будет помещаться, пуская сам пользователь думает как поместить текст. Либо изменяя шрифт, либо изменяя высоту строки для автопереноса. Дело в том, что все возможные ситуации учесть невозможно. Это будет стоить кучу времени с минимальным результатом. Затраты на подобную модификацию никак не окупят результата. Поэтому, используйте максимально простое решение. Например, использовать шрифт равной ширины (Courier или MS Sens Serif) у которого ширина ВСЕХ символов одинаковая. Тогда расчет будет простейший. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 11:10 |
|
Определение ширины textbox
|
|||
---|---|---|---|
#18+
ВладимирМДело в том, что все возможные ситуации учесть невозможно. Это будет стоить кучу времени с минимальным результатом. Затраты на подобную модификацию никак не окупят результата. Поэтому, используйте максимально простое решение. Например, использовать шрифт равной ширины (Courier или MS Sens Serif) у которого ширина ВСЕХ символов одинаковая. Тогда расчет будет простейший.Или Используйте самый "узкий" шрифт из доступных, например, Arial Narrow, который позволит запихать значительно больше текста в тот же бокс, и, опять же, не занимайтесь бесмысленными рассчетами. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2011, 11:17 |
|
|
start [/forum/topic.php?fid=41&fpage=80&tid=1584579]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
174ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
others: | 283ms |
total: | 577ms |
0 / 0 |