трабла с "разобрать по копиям"
есть печатная форма... напр. плат. пор.
мне надо напечатать N-надцать штук, причем каждой по 2 шт.
сделал форму, все как обычно... все робыть...
просмотр... при печати - говорю, что каждый лист 2 раза напечатать и "положить" рядом.... т.е. n1, n1, n2, n2, ... , nn,nn... и как не снимал не ставил галочку "разложить по копиям" - по барабану, упорно печатает платежки с 1-й по посл. а потом еще раз... т.е. n1,n2,...,nn,n1,n2,...,nn...
как побороть? может что то не атк делаю? или ошибочка вкралась?
FR 3.10 юзаю...
заранее благодарен...
мне надо напечатать N-надцать штук, причем каждой по 2 шт.
сделал форму, все как обычно... все робыть...
просмотр... при печати - говорю, что каждый лист 2 раза напечатать и "положить" рядом.... т.е. n1, n1, n2, n2, ... , nn,nn... и как не снимал не ставил галочку "разложить по копиям" - по барабану, упорно печатает платежки с 1-й по посл. а потом еще раз... т.е. n1,n2,...,nn,n1,n2,...,nn...
как побороть? может что то не атк делаю? или ошибочка вкралась?
FR 3.10 юзаю...
заранее благодарен...
Комментарии
короче... решил расковырять сам.... времени не было для разборов че к чему, так что сделал как быстрее....
посему вот кусок кода
function PrintPage(Index: Integer): Boolean;
var
Bin: Integer;
j:integer;
begin
//++++++++++++++++++++++++++++++++++++++++++++++++++
for j:= 1 to c do
begin
//++++++++++++++++++++++++++++++++++++++++++++++++++
Result := True;
if Index >= Count then Exit;
if (pgList.Count <> 0) and (pgList.IndexOf(IntToStr(Index + 1)) = -1) then Exit;
if ((PrintPages = ppOdd) and ((Index + 1) mod 2 = 0)) or
((PrintPages = ppEven) and ((Index + 1) mod 2 = 1)) then Exit;
if Report.Terminated then
begin
Printer.Abort;
Result := False;
Exit;
end;
Page := GetPage(Index);
if not PagePrinted then
Printer.BeginDoc;
if Index = 0 then
Bin := Page.Bin else
Bin := Page.BinOtherPages;
// Printer.SetPrintParams(Page.PaperSize, Page.PaperWidth, Page.PaperHeight,
// Page.Orientation, Bin, c, Integer(Page.Duplex) + 1);
//++++++++++++++++++++++++++++++++++++++++++++++++++
Printer.SetPrintParams(Page.PaperSize, Page.PaperWidth, Page.PaperHeight,
Page.Orientation, Bin, 1, Integer(Page.Duplex) + 1);
//++++++++++++++++++++++++++++++++++++++++++++++++++
Printer.BeginPage;
DrawPage(Index, Printer.Canvas, Printer.DPI.X / 96, Printer.DPI.Y / 96,
-Printer.LeftMargin * Printer.DPI.X / 25.4,
-Printer.TopMargin * Printer.DPI.Y / 25.4);
Report.InternalOnProgress(ptPrinting, Index + 1);
Printer.EndPage;
Application.ProcessMessages;
PagePrinted := True;
ClearPageCache;
//++++++++++++++++++++++++++++++++++++++++++++++++++
end;
//++++++++++++++++++++++++++++++++++++++++++++++++++
end;
где заремарено то что переделалось малость и "//++++++" - отмечены вставки кода....
кто хочет - поковыряйтесь... может найдете суть проблеммы глубже, что до меня - то в этом виде код работает целиком и полностью.... так что.... комменты прошу .....
(отписав сей кусок разработчикам - ответа о корректности такого изменения не получил....)