Вниз
Скачать: CL | DM;

Печать из TStringGrid   Найти похожие ветки 

 
lookin ©   (2005-07-15 21:42) [0]

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

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

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

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

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


 
lookin ©   (2005-07-15 21:43) [1]

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


 
Alexander Panov ©   (2005-07-15 21:52) [2]

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


 
lookin ©   (2005-07-15 21:57) [3]

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

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


 
Virgo_Style ©   (2005-07-15 21:58) [4]

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 22:02) [5]

[4] Virgo_Style ©   (15.07.05 21:58)

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


 
Alexander Panov ©   (2005-07-15 22:05) [6]

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


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


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

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


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

[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


 
Alexander Panov ©   (2005-07-15 22:11) [9]

lookin ©   (15.07.05 22:09) [8]

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


 
lookin ©   (2005-07-15 22:36) [10]

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

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


 
Virgo_Style ©   (2005-07-15 22:42) [11]

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


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


 
Alexander Panov ©   (2005-07-15 22:44) [12]

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


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


 
lookin ©   (2005-07-15 22:57) [13]

[11] Virgo_Style ©   (15.07.05 22:42)

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


 
lookin ©   (2005-07-15 22:58) [14]

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.031 c
6-1114747447
Valera
2005-04-29 08:04
2005.08.07
IdIcmpClient и многопоточность


3-1120132278
Vasek
2005-06-30 15:51
2005.08.07
Проблемма с security.fdb?


8-1112180858
seregka
2005-03-30 15:07
2005.08.07
Прокрутка изображения


11-1104677621
Boguslaw
2005-01-02 17:53
2005.08.07
Is it a thead-safe operation ?


1-1121361505
wqer
2005-07-14 21:18
2005.08.07
запустить упаковщик




   Наверх