Dialogpage при пакетной печати.
Такой вопрос...
Есть отчёт с Dialog Page на котором лежит пара Edit'ов.
Разумеется они должны быть заполнены пользователем.
Но возникла ситуация, когда этот отчёт должен быть напечатан пакетно (т.е. один и тот же отчёт вызывается несколько раз (PrepareReport несколько раз в самом конце ShowReport) с параметрами PrintOnPreviousPage = True и ClearLastRepot = false). Соответственно сколько раз его вызываешь - столько раз он и показывает DialogPage.
Необходимо же, что бы юзер ввел данные только в первом случае, а потом уже использовалось то, что он навводил в первом случае.
Код примерно такой (Delphi 7):
Конструктор и деструктор в целом стандартны...
Есть отчёт с Dialog Page на котором лежит пара Edit'ов.
Разумеется они должны быть заполнены пользователем.
Но возникла ситуация, когда этот отчёт должен быть напечатан пакетно (т.е. один и тот же отчёт вызывается несколько раз (PrepareReport несколько раз в самом конце ShowReport) с параметрами PrintOnPreviousPage = True и ClearLastRepot = false). Соответственно сколько раз его вызываешь - столько раз он и показывает DialogPage.
Необходимо же, что бы юзер ввел данные только в первом случае, а потом уже использовалось то, что он навводил в первом случае.
Код примерно такой (Delphi 7):
type
TmPrint = class
private
FR: TfrxReport;
.....
public
.....
procedure LoadReportPackage(ReportFileName: string; DataSet: TDataSet);
procedure LoadReportPackageShow;
end;
......
{ ------------------------------------------------------------------- }
procedure TmPrint.LoadReportPackage(ReportFileName:string; DataSet:TDataSet);
begin
FDataSet := DataSet;
ReportFile:= ReportFileName;
FR.LoadFromFile(ReportFile);
FR.PrepareReport(False);
end;
{ ------------------------------------------------------------------- }
procedure TmPrint.LoadReportPackageShow();
begin
FR.ShowPreparedReport;
end;
т.е. в цикле сначала вызывается LoadReportPackage с меняющимся данными датасета, а потом вызывается LoadReportPackageShowКонструктор и деструктор в целом стандартны...
Комментарии
1. Создать в Delphi форму на которой будет пара Edit'ов (вместо Dialog Page в отчете).
2. Написать в вашей основной форме следующий код: Где Memo1 и Memo2 это мемо в отчете, которые заполнялись посредством Dialog Page.
Так же где-нибудь перед первым вызовом TmPrint.LoadReportPackage(ReportFileName:string; DataSet:TDataSet), нужно написать код: