![]() |
|
Модераторы: Akina |
![]()
|
|
| Bisy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 15.4.2006 Репутация: нет Всего: нет |
Сталкнулся с проблемой, как напечатать документ из программы. делает это объект Printer
Печатает почти как надо, однако обзац печатает в строчку (независимо от его длинны), как напечатать обзац на нескольких строчках? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Вставить необходимое количество vbNewLine в нужных местах
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Bisy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 15.4.2006 Репутация: нет Всего: нет |
Я уже думал сделать так, но если текст в два абзаца, то куда бы ло не шло, а если текст страниц так на 30, что тогда делать?
|
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
Тут уже задача усложняется.
Обычным Printer.Print - не обойдешся. Нужно выводить на печать через API в контекст DC принтера. Если еще и на страницы бить - нужен расчет на базе того-же API. -------------------- Я желаю всем Счастья! |
|||
|
||||
| SashaVinnica |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 16.3.2005 Репутация: нет Всего: нет |
Тут дествительно нужно поиграться с API. Я бы сделал это так... Читаеш текст из файла (или с чего ты там читаеш) в одну переменную, потом создаеш контекст совместимый с контекстом принтера определяеш какую площадь будет занимать текст, создаеш битовую карту совместимую с контекстом ширина которой равна ширине печатаемой страницы, а высота такая чтоб соблюсти площадь, и привязываеш ее к контексту. Потом вставляеш текст в созданый тобою контекст спомощью DrawText. А дальше вобще просто, вырезаеш по очереди куски по высоте примерно равные странице, но кратные высоте строки, и вставляеш в контекст принтера.
P.S. я не гарантирую что это самый простой и правильный вариант, я не когда не делал этого, и все что я написал, я просто придумал как это можно реализовать известными мне методами. P.P.S. По вопросам нужных API обращайся сюда icq: 326-231-397 Это сообщение отредактировал(а) SashaVinnica - 27.6.2006, 20:20 |
|||
|
||||
| Bisy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 15.4.2006 Репутация: нет Всего: нет |
Понятно, мысль уловил, попробую!
|
|||
|
||||
| Naghual |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1893 Регистрация: 15.5.2004 Где: Украина, Днепр Репутация: 26 Всего: 49 |
SashaVinnica, я вижу это иначе, однако также не претендую на единственно верное решение.
Переменной типа Rect назначаем граничные размеры по горизонтали (ширина области печати страницы). Затем при помощи DrawText с параметром DT_CALCRECT получаем высоту печатаемого куска текста (параграфа). Далее по логике - либо печатаем на новой странице либо на этой-же. -------------------- Я желаю всем Счастья! |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |