Печать отчета на бланке

отредактировано 02:35 Раздел: FastReport 3.0
Задачка такая: отчет, по выбору пользователя, должен выводиться либо на чистый лист A4, либо впечатываться в бланк.
Делаю так: отчет выводится в мою отдельную форму для Preview. Выводится и сам бланк и данные. На форме есть Checkbox "Печатать на бланке" и кнопка "Печать". Если печать на бланке, то в событии OnPrintReport некоторые объекты скрываю, у некоторых убираю рамки:
procedure TRpt.RptPrintReport(Sender: TObject);
var Obj: TList;
    Ctl: TfrxView;
    i: Integer;
begin
  if PrintOnBlank.Checked then begin
    Obj:=Rpt.PreviewPages.Page[0].AllObjects;
    for i:=0 to Obj.Count-1 do begin
      if TfrxComponent(Obj[i]) is TfrxView then begin
        Ctl:=Obj[i];
        if Ctl.TagStr='NoPrint' then Ctl.Visible:=false
        else if Ctl.TagStr='NoPrintFrame' then Ctl.Frame.Typ:=[];
      end;
    end;
  end;
end;

В результате: рамки убираются, а поля с Visible=false все равно выводятся.
То же самое происходит если из Preview вызвать дизайнер и св-во Visible изменить на false - при возврате к Preview объект все равно виден.
Такое впечатление, что свойство Visible обрабатывается только на этапе формирования отчета, а у сформированного просто игнорируется...

В принципе, подправив исходники, удалось все исправить, но не хотелось бы делать это каждый раз при переходе к новой версии. Может быть есть какой-то другой способ скрыть поля при выводе на печать?

Комментарии

  • отредактировано 02:35
    А не лучше ли в твоём случае изменять свойство Printable .
    В превью всегда покажется, а при печати в зависимости от значения.
  • отредактировано 02:35
    Да. Спасибо. Работает.

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