Динамическое создание отчета с вертикальным бандом
Прошу помочь. Есть процедура, которая должна динамически генерить отчет в FastReport, но при этом использать вертикальный банд.
Отчет не формируется. Пустой лист.
Примерно тоже самое, но для горизонтальных бандов работает без проблем.
Подскажите плз, в чем ошибся?
procedure PrintVerticalGridContentFastRep(VerticalList: TcxDBVerticalGrid);
var
Report: TfrxReport;
drDataSet: TfrxDBDataset;
Page: TfrxReportPage;
Header: TfrxHeader;
DataBand: TfrxMasterData;
I: integer;
RepName: string;
TopPos: integer;
begin
RepName:=VerticalList.hint;
if VerticalList.FocusedRow=nil then
begin
Application.MessageBox(pchar(msg_DataSetIsEmptyShort),pchar(msg_Caption),MB_ICONINFORMATION+MB_OK);
exit;
end;
drDataSet:=TfrxDBDataset.Create(nil);
with drDataSet do
begin
DataSet:=VerticalList.DataController.DataSource.DataSet;
DataSet.DisableControls;
end;
Report:=TfrxReport.Create(nil);
with Report do
begin
CreateUniqueName;
DataSets.Add(drDataSet);
DotMatrixReport:=False;
with EngineOptions do
begin
PrintIfEmpty:=True;
TempDir:=ProgramSettings.RepPath;
end;
IniFile:='\Software\Fast Reports';
with PreviewOptions do
begin
AllowEdit:=False;
Buttons:=[pbPrint,pbSave,pbZoom,pbFind,pbPageSetup,pbNavigator,pbNoFullScreen,pbNoEmail];
MDIChild:=True;
Modal:=False;
Zoom:=1;
end;
with ReportOptions do
begin
Name:='Предварительный просмотр перед печатью: '+chr(39)+RepName+chr(39);
Author:=UserParam.Active_UserName;
Compressed:=True;
CreateDate:=Date;
VersionBuild:='1';
VersionMajor:='0';
VersionMinor:='0';
VersionRelease:='1';
end;
end;
Page := TfrxReportPage.Create(Report);
with Page do
begin
CreateUniqueName;
SetDefaults;
end;
Header := TfrxHeader.Create(Page);
with Header do
begin
CreateUniqueName;
Vertical:=True;
Left:=0;
Width := 200;
end;
TopPos:=0;
for I := 0 to VerticalList.Rows.Count-1 do
begin
if not VerticalList.Rows[I].Visible then Continue;
with TfrxMemoView.Create(Header) do
begin
CreateUniqueName;
Frame.Width:=2;
Frame.Typ:=[ftBottom,ftTop,ftLeft,ftRight];
Text:=TcxDBEditorRow(VerticalList.Rows.Items[I]).Properties.Caption;
Font.Style:=[fsBold];
HAlign := haCenter;
VAlign := vaCenter;
SetBounds(0, TopPos, 200, 20);
WordWrap:=True;
Color:=$00E9E9E9;
StretchMode:=smMaxHeight;
end;
TopPos:=TopPos+20;
end;
DataBand := TfrxMasterData.Create(Page);
with DataBand do
begin
CreateUniqueName;
DataSet := drDataSet;
Left:=200;
Width:= 100;
Stretched:=True;
Vertical:=True;
end;
TopPos:=0;
for I := 0 to VerticalList.Rows.Count-1 do
begin
if not VerticalList.Rows[I].Visible then Continue;
with TfrxMemoView.Create(DataBand) do
begin
CreateUniqueName;
DataSet := drDataSet;
DataField := TcxDBEditorRow(VerticalList.Rows.Items[I]).Properties.DataBinding.FieldName;
Frame.Width:=1;
Frame.Typ:=[ftBottom,ftTop,ftLeft,ftRight];
SetBounds(0, TopPos, 200, 20);
WordWrap:=True;
StretchMode:=smMaxHeight;
VAlign := vaCenter;
end;
TopPos:=TopPos+20;;
end;
if not Report.PrepareReport then
begin
Application.MessageBox(pchar(msg_ErrorDictPrintSimply),pchar(msg_Caption),MB_ICONINFORMATION+MB_OK);
drDataSet.dataset.enablecontrols;
exit;
end;
Report.ShowPreparedReport;
drDataSet.dataset.enablecontrols;
end;
Отчет не формируется. Пустой лист.
Примерно тоже самое, но для горизонтальных бандов работает без проблем.
Подскажите плз, в чем ошибся?
Комментарии