Unconnected Header/footer
Здравствуйте, уважаемые коллеги.
Тренируюсь в динамическом создании отчёта, но при выполнении PrepareReport получаю сабжевую ошибку. Не пойму, что я не так делаю.
Вот фрагмент кода:
Тренируюсь в динамическом создании отчёта, но при выполнении PrepareReport получаю сабжевую ошибку. Не пойму, что я не так делаю.
Вот фрагмент кода:
function putmemo (parnt: TfrxComponent;
const lft, tp, wid, hgt: extended;
fnt: TFont; const rotat: smallint;
const txt: string;
const valgn: TfrxValign;
const halgn: TfrxHAlign): TfrxMemoView;
begin
Result:=TfrxMemoView.Create (parnt);
with Result
do begin
CreateUniqueName;
left:=lft;
top:=tp;
width:=wid;
height:=hgt;
Font:=fnt;
rotation:=rotat;
halign:=halgn;
valign:=valgn;
Text:=txt;
WordWrap:=true;
AutoWidth:=false;
WYSIWYG:=true;
end;
end;
procedure TForm1.frxReport1GetValue(const VarName: string;
var Value: Variant);
begin
if VarName='Num' then Value:=frxUserDataSet1.RecNo;
if VarName='Txt'
then Value:=StrArray [frxUserDataSet1.RecNo];
end;
procedure TForm1.PrintButtonClick(Sender: TObject);
var
Pag: TfrxReportPage;
RepTitle: TfrxReportTitle;
DataHdr: TfrxHeader;
DataBand: TfrxMasterData;
Mem: TfrxMemoView;
wid1, wid2: extended;
begin
with frxReport1
do begin
DataSets.Clear;
DataSets.Add (frxUserDataSet1);
Variables.Clear;
Variables.AddVariable('MyCategory', 'Num', '');
Variables.AddVariable('MyCategory', 'Txt', '');
Pag:=TfrxReportPage.Create (frxReport1);
Pag.SetDefaults;
RepTitle:=TfrxReportTitle.Create (Pag);
RepTitle.Stretched:=true;
Mem:=putmemo (RepTitle, 0, 0, RepTitle.Width, RepTitle.Height,
FontDialog1.Font, 0, 'Заголовок отчёта',
vaTop, haCenter);
Mem.StretchMode:=smMaxHeight;
DataHdr:=TfrxHeader.Create (Pag);
DataHdr.Stretched:=true;
wid1:=DataHdr.Width/8;
wid2:=DataHdr.Width-wid1;
Mem:=putmemo (DataHdr, 0, 0, wid1, DataHdr.Height,
FontDialog1.Font, 0, '№', vaTop, haCenter);
Mem.StretchMode:=smMaxHeight;
Mem.Frame.Typ:=[ftTop]+[ftBottom]+[ftLeft]+[ftRight];
Mem:=putmemo (DataHdr, wid1, 0, wid2, DataHdr.Height,
FontDialog1.Font, 0, 'Текст константы',
vaTop, haCenter);
Mem.StretchMode:=smMaxHeight;
Mem.Frame.Typ:=[ftTop]+[ftBottom]+[ftLeft]+[ftRight];
DataBand:=TfrxMasterData.Create (Pag);
with DataBand
do begin
DataSet:=frxUserDataSet1;
Stretched:=true;
AllowSplit:=true;
end;
Mem:=putmemo (DataBand, 0, 0, wid1, DataBand.Height,
FontDialog1.Font, 0,
'[Num]', vaTop, haCenter);
Mem.StretchMode:=smMaxHeight;
Mem.Frame.Typ:=[ftTop]+[ftBottom]+[ftLeft]+[ftRight];
Mem:=putmemo (DataBand, wid1, 0, wid2, DataBand.Height,
FontDialog1.Font, 0, '[Txt]',
vaTop, haCenter);
Mem.StretchMode:=smMaxHeight;
Mem.Frame.Typ:=[ftTop]+[ftBottom]+[ftLeft]+[ftRight];
with frxUserDataSet1
do begin
RangeEnd:=reCount;
RangeEndCount:=20;
end;
if PrepareReport
then if PreviewCheckBox.Checked
then ShowPreparedReport
else Print;
end;
end;
Комментарии