|
|
|
Кто-нибудь бодался с методом отчета TextWidth?
|
|||
|---|---|---|---|
|
#18+
По логике он должен возвращать реальную длину текста, который предполагается напечатать методом Print (По событию OnPrint раздела или отчета). Вот простенькая процедура: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. А вот результат: FontName: MS Sans Serif FontSize: 10 Длина: 696(1.2275 cm.) Символов: 1 Длина: 149(0.2628 cm.) Символов: 2 Длина: 223(0.3933 cm.) Символов: 3 Длина: 298(0.5256 cm.) Символов: 4 Длина: 872(1.5379 cm.) Символов: 5 Длина: 744(1.3122 cm.) Символов: 6 Длина: 720(1.2698 cm.) Символов: 7 Длина: 1063(1.8748 cm.) Символов: 8 Длина: 1058(1.8660 cm.) Символов: 9 Длина: 1340(2.3633 cm.) Символов: 10 Длина: 1340(2.3633 cm.) Символов: 11 Длина: 2212(3.9012 cm.) Символов: 12 Длина: 2212(3.9012 cm.) Символов: 13 Длина: 1042(1.8377 cm.) Символов: 14 Длина: 1116(1.9683 cm.) Символов: 15 Длина: 1390(2.4515 cm.) Символов: 16 Длина: 1265(2.2310 cm.) Символов: 17 Длина: 1943(3.4268 cm.) Символов: 18 Длина: 1943(3.4268 cm.) Символов: 19 Длина: 2815(4.9647 cm.) Символов: 20 FontName: Arial Cyr FontSize: 10 Длина: 701(1.2363 cm.) Символов: 1 Длина: 110(0.1940 cm.) Символов: 2 Длина: 166(0.2928 cm.) Символов: 3 Длина: 221(0.3898 cm.) Символов: 4 Длина: 928(1.6367 cm.) Символов: 5 Длина: 574(1.0123 cm.) Символов: 6 Длина: 535(0.9436 cm.) Символов: 7 Длина: 852(1.5026 cm.) Символов: 8 Длина: 840(1.4815 cm.) Символов: 9 Длина: 1338(2.3598 cm.) Символов: 10 Длина: 1338(2.3598 cm.) Символов: 11 Длина: 2266(3.9965 cm.) Символов: 12 Длина: 2266(3.9965 cm.) Символов: 13 Длина: 773(1.3633 cm.) Символов: 14 Длина: 828(1.4603 cm.) Символов: 15 Длина: 1032(1.8201 cm.) Символов: 16 Длина: 938(1.6543 cm.) Символов: 17 Длина: 2005(3.5362 cm.) Символов: 18 Длина: 2005(3.5362 cm.) Символов: 19 Длина: 2005(3.5362 cm.) Символов: 20 Что бы это значило? И как с этим бороться? Мало того, что разнобой, ни один размер и близко не соответствуют измеренному линейкой на бумаге. У меня А2000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 16:38 |
|
||
|
Кто-нибудь бодался с методом отчета TextWidth?
|
|||
|---|---|---|---|
|
#18+
см т,1 стр, 905 там правда про ширину текста на экране, но может быть пригодится логика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 16:50 |
|
||
|
Кто-нибудь бодался с методом отчета TextWidth?
|
|||
|---|---|---|---|
|
#18+
глава "Секреты мастеров" параграф "Скроько места займет на экране текст, выведенный данным шрифтом" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 16:52 |
|
||
|
Кто-нибудь бодался с методом отчета TextWidth?
|
|||
|---|---|---|---|
|
#18+
Я с таким не встречался Результат (A2000, 2002) FontName: Arial Cyr FontSize: 10 Длина: 58(0,1023 cm.) Символов: 1 Длина: 115(0,2028 cm.) Символов: 2 Длина: 173(0,3051 cm.) Символов: 3 Длина: 230(0,4056 cm.) Символов: 4 Длина: 288(0,5079 cm.) Символов: 5 Длина: 346(0,6102 cm.) Символов: 6 Длина: 403(0,7108 cm.) Символов: 7 Длина: 461(0,8131 cm.) Символов: 8 Длина: 518(0,9136 cm.) Символов: 9 Длина: 576(1,0159 cm.) Символов: 10 Длина: 634(1,1182 cm.) Символов: 11 Длина: 691(1,2187 cm.) Символов: 12 Длина: 749(1,3210 cm.) Символов: 13 Длина: 806(1,4215 cm.) Символов: 14 Длина: 864(1,5238 cm.) Символов: 15 Длина: 922(1,6261 cm.) Символов: 16 Длина: 979(1,7266 cm.) Символов: 17 Длина: 1037(1,8289 cm.) Символов: 18 Длина: 1094(1,9295 cm.) Символов: 19 Длина: 1152(2,0317 cm.) Символов: 20 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2003, 19:46 |
|
||
|
Кто-нибудь бодался с методом отчета TextWidth?
|
|||
|---|---|---|---|
|
#18+
Выяснил, что в Win2000 всё работает правильно. Врет Win98!? К сожалению с применением API функции GetTextExtentPoint32 (как у Гетса) тоже проблема. Например, для "Arial" при размере шрифта - 10, для символа "I" возвращается число 45 (для "II" - 90 и т.д.). Метод TextWidth у Сержа Гаврилова дает 58, а у меня (в Win2000) - 55. Видимо вмешивается драйвер принтера. Указание в процедуре hWnd окна отчета вместо hWnd рабочего стола ничего не меняет. ???? Жаль... А какая благородная была цель - подбирать размер шрифта в поле, чтоб вписать весь текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2003, 16:35 |
|
||
|
Кто-нибудь бодался с методом отчета TextWidth?
|
|||
|---|---|---|---|
|
#18+
жаль. я об этом тоже мечтал 3 года назад потом бросил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2003, 18:23 |
|
||
|
Кто-нибудь бодался с методом отчета TextWidth?
|
|||
|---|---|---|---|
|
#18+
Я извиняюсь, но если очень хочется, то определить ширину текста можно (теоретически)... Гемор еще тот, но можно... Вариант 1: создаем контекст устройства, выводим в него наш текст и получаем ограничивающий прямоугольник для содержимого контекста устройства. Вариант 2 (100% рабочий, но еще более геморный): в контексте устройства выводим текст, предварительно включив на "запись" построитель так называемого "пути", из которого можно построить регион, уже для которого абсолютно точно можно получить минимальный ограничивающий прямоугольник... Практически именно эту задачу не решал, но решал описанные в этих самых вариантах и в приложении к поставленной задаче сработать должно... Конечно, извращение полнейшее, но что делать, если очень хочется, а стандартные функции работают несколько "непотребным" образом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2003, 19:28 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32360127&tid=1677503]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 421ms |

| 0 / 0 |
