Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Печать из TStringGrid


lookin ©   (2005-07-15 21:42:00) 

Посоветуйте, пожалуйста, способы печати из TStringGrid.

У меня пока родилось вот что:

1. Через txt-файл. Этот способ ломает таблицу, если она не влазит в A4.

2. Через TStringGrid.Canvas. Работа этого способа не ясна, если StringGrid имеет ползунок (ScrollBar).

PS Использовать любые иные приложения для печати нельзя...
PPS У меня сумбур в голове по объективной причине, прошу извинить...


lookin   (2005-07-15 22:58:00) [1]

Вопрос - будет ли принтер печатать следующую страницу, если размер Bitmap выползает за пределы некоторой величины?


lookin   (2005-07-15 22:57:00) [2]

[11] Virgo_Style ©   (15.07.05 22:42)

Сложно сказать, что там не работает. Но печатает лишь одну страницу, причем на ней не вся таблица... Я уж и наужимался с этими масштабами, скоро сам сожмусь... Принтер печатает ОДНУ старницу...


Alexander Panov   (2005-07-15 22:44:00) [3]

Virgo_Style ©   (15.07.05 22:42) [11]
Printer.NewPage не работает?? Вот это номер :-\


Как говорится - "Век живи - век учись" ;)


Virgo_Style   (2005-07-15 22:42:00) [4]

lookin ©   (15.07.05 22:02) [5]
не могу заставить принтер печатать следующую страницу


Printer.NewPage не работает?? Вот это номер :-\


lookin   (2005-07-15 22:36:00) [5]

[9] Alexander Panov ©   (15.07.05 22:11)

Черт, все пытаюсь это сделать - ничего не удается...


Alexander Panov   (2005-07-15 22:11:00) [6]

lookin ©   (15.07.05 22:09) [8]

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


lookin   (2005-07-15 22:09:00) [7]

[6] Alexander Panov ©   (15.07.05 22:05)
>>Самый простой вариант - Printer.EndDoc, затем снова Printer.BeginDoc;

Черт возьми, не считаю его самым простым...

И еще вопрос - есть ограничения на размер Bitmap? А то ругается на      b.Width:=Table.ColCount*800; b.Height:=Table.RowCount*200;

числа получаются около 8000 на 4000


lookin   (2005-07-15 22:07:00) [8]

Принтер мне одну страницу печатает и все...


Alexander Panov   (2005-07-15 22:05:00) [9]

lookin ©   (15.07.05 22:02) [5]
но не могу заставить принтер печатать следующую страницу


Самый простой вариант - Printer.EndDoc, затем снова Printer.BeginDoc;


lookin   (2005-07-15 22:02:00) [10]

[4] Virgo_Style ©   (15.07.05 21:58)

Я могу масштабировать, но не могу заставить принтер печатать следующую страницу... Или что то делаю не так...


Virgo_Style   (2005-07-15 21:58:00) [11]

3. Полностью руками. Находим масштаб (чтобы перевести ширину колонок в пиксели принтера), разбиваем на страницы и рисуем на канве принтера.
Ничего особенно сложного...
Посмотреть, как это не надо делать :o), можно в кладовке, http://www.kladovka.net.ru/index.cgi?pid=dir&rid=8, модуль printgrids.

Alexander Panov ©   (15.07.05 21:52) [2]
imho качество может оказаться неважным из-за масштабирования...


lookin   (2005-07-15 21:57:00) [12]

[2] Alexander Panov ©   (15.07.05 21:52)

Мне разбивку надо, а не сжатие...


Alexander Panov   (2005-07-15 21:52:00) [13]

Рисуешь каждую страницу на TBitmap, предварительно вычислив необходимую ширину, используя StretchBlt копируешь на канву принтера, сжимая, как тебе надо.


lookin   (2005-07-15 21:43:00) [14]

Еще посоветовали Rave Report. Почитал кое-чего, но не ясно, требует ли он наличие каких-либо особых файлов в системе?


Наверх

Титульная страница Поиск, карта сайта Написать письмо