Динамическое создание Tfrxgroupheader

отредактировано 06:54 Раздел: FastReport 4.0
В frxReport загружается готовый отчет состоящий из одной страницы, все компоненты находящиеся нанем переносятся приведенным кодом на динамически добавленый компонент TfrxMasterData. Так же создается еще и TfrxGroupHeader. При вызове frxReport1.PrepareReport(True) выдается сообщение:
Error
The following error(s) have occured:

No data band for the group GroupHeader1


ОК

В чем проблема?

Код:
var
ds: Integer;

procedure TForm3.FormCreate(Sender: TObject);
var
i, j: Integer;
List: TList;
Page: TfrxReportPage;
Group: TfrxGroupHeader;
Data: TfrxMasterData;
begin
ds := 0;
for i := 0 to frxReport1.PagesCount - 1 do
if frxReport1.Pages.ClassName = 'TfrxReportPage' then
begin
Page := TfrxReportPage(frxReport1.Pages);
List := TList.Create;
try
for j := Page.Objects.Count - 1 downto 0 do
begin
List.Add(Page.Objects[j]);
TfrxComponent(Page.Objects[j]).Parent := nil;
end;
Group := TfrxGroupHeader.Create(Page);
Group.CreateUniqueName;
Group.Condition := '[frxUserDataSet1."q"]';
Group.StartNewPage := True;
Group.Height := 10;
Group.Stretched := True;
Data := TfrxMasterData.Create(Group);
Data.CreateUniqueName;
Data.DataSet := frxUserDataSet1;
for j := 0 to List.Count - 1 do
begin
if TfrxComponent(List[j]).Top + TfrxComponent(List[j]).Height > Data.Height then
Data.Height := TfrxComponent(List[j]).Top + TfrxComponent(List[j]).Height;
TfrxComponent(List[j]).Parent := Data;
end;
finally
List.Free;
end;
frxReport1.PrepareReport(True);
Break;
end;
end;

procedure TForm3.frxUserDataSet1CheckEOF(Sender: TObject; var Eof: Boolean);
begin
Eof := ds > 10000;
end;

procedure TForm3.frxUserDataSet1First(Sender: TObject);
begin
ds := 0;
end;

procedure TForm3.frxUserDataSet1GetValue(const VarName: string;
var Value: Variant);
begin
Value := ds;
end;

procedure TForm3.frxUserDataSet1Next(Sender: TObject);
begin
ds := ds + 1;
end;

Комментарии

  • gpigpi
    отредактировано 06:54
    Задавайте свойтсо бэндов Top так, чтобы бэнды располагались в правильном порядке
  • отредактировано July 2013
    А если в моем коде
       frxGroupHeader := TfrxGroupHeader.Create(frxReport1.FindObject('Page1'));
       frxGroupHeader.CreateUniqueName;
       frxGroupHeader.Top := TfrxReportTitle(frxReport1.FindComponent('ReportTitle1')).Top;
       frxGroupHeader.Condition := '[frxUserDataSet1."GroupType"]';
       frxGroupHeader.StartNewPage := True;
       frxGroupHeader.Height := 20;
       frxGroupHeader.Stretched := True;
       Data := TfrxMasterData.Create(frxGroupHeader);
       Data.CreateUniqueName;
       Data.DataSet := frxUserDataSet1;
    
       memo := TfrxMemoView.Create(frxGroupHeader);
       memo.CreateUniqueName;
       memo.Text := '[frxUserDataSet1."GroupName"]';
       memo.HAlign := haLeft;
       memo.SetBounds(0,0,100,20);
       memo.StretchMode := smMaxHeight;
    
       frxReport1.ShowReport;
    

    мне говорится 'groupHeader1 : error in expression '[frxUserDataSet1.''GroupType]' : Identifier expected

    это что я не так сделал ?

    Уже нашел :) там ненужны скобочки frxGroupHeader.Condition := 'frxUserDataSet1."GroupType"';

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

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.