Печать отчета на бланке
Задачка такая: отчет, по выбору пользователя, должен выводиться либо на чистый лист A4, либо впечатываться в бланк.
Делаю так: отчет выводится в мою отдельную форму для Preview. Выводится и сам бланк и данные. На форме есть Checkbox "Печатать на бланке" и кнопка "Печать". Если печать на бланке, то в событии OnPrintReport некоторые объекты скрываю, у некоторых убираю рамки:
В результате: рамки убираются, а поля с Visible=false все равно выводятся.
То же самое происходит если из Preview вызвать дизайнер и св-во Visible изменить на false - при возврате к Preview объект все равно виден.
Такое впечатление, что свойство Visible обрабатывается только на этапе формирования отчета, а у сформированного просто игнорируется...
В принципе, подправив исходники, удалось все исправить, но не хотелось бы делать это каждый раз при переходе к новой версии. Может быть есть какой-то другой способ скрыть поля при выводе на печать?
Делаю так: отчет выводится в мою отдельную форму для 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 обрабатывается только на этапе формирования отчета, а у сформированного просто игнорируется...
В принципе, подправив исходники, удалось все исправить, но не хотелось бы делать это каждый раз при переходе к новой версии. Может быть есть какой-то другой способ скрыть поля при выводе на печать?
Комментарии
В превью всегда покажется, а при печати в зависимости от значения.