трабла с "разобрать по копиям"

отредактировано 16:40 Раздел: FastReport 3.0
есть печатная форма... напр. плат. пор.
мне надо напечатать N-надцать штук, причем каждой по 2 шт.
сделал форму, все как обычно... все робыть...
просмотр... при печати - говорю, что каждый лист 2 раза напечатать и "положить" рядом.... т.е. n1, n1, n2, n2, ... , nn,nn... и как не снимал не ставил галочку "разложить по копиям" - по барабану, упорно печатает платежки с 1-й по посл. а потом еще раз... т.е. n1,n2,...,nn,n1,n2,...,nn...

как побороть? может что то не атк делаю? или ошибочка вкралась?

FR 3.10 юзаю...

заранее благодарен...

Комментарии

  • отредактировано 16:40
    эээх.... комрады посетители и комрады разработчики.... НИ ОТ КОГО НИ ОДНОГО ВНЯТНОГО ОТВЕТА... тока ктось из разработчиков по почте отписал - мол де принтер и дрова у тя кривые... - сие не верно... и потом пообещал разобраться.....
    короче... решил расковырять сам.... времени не было для разборов че к чему, так что сделал как быстрее....
    посему вот кусок кода
    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;
    где заремарено то что переделалось малость и "//++++++" - отмечены вставки кода....
    кто хочет - поковыряйтесь... может найдете суть проблеммы глубже, что до меня - то в этом виде код работает целиком и полностью.... так что.... комменты прошу .....
    (отписав сей кусок разработчикам - ответа о корректности такого изменения не получил....)

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.