Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.07;
Скачать: 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 вся ветка

Текущий архив: 2005.08.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
3-1119957729
AlexTregubov
2005-06-28 15:22
2005.08.07
Как проверить наличие поля в таблице


3-1120285524
Draught
2005-07-02 10:25
2005.08.07
Фильтр в ADOTable


14-1121353595
Сибиряк
2005-07-14 19:06
2005.08.07
Портировать с РНР на Delphi.


1-1121533517
TStas
2005-07-16 21:05
2005.08.07
Как зависит скорость выполнения потока от его приоритета?


1-1121453808
Destroyer
2005-07-15 22:56
2005.08.07
Помогите, плз, с динамическим созданием двумерного массива