访问DataBand上的所有MemoView

时间:2017-09-29 07:30:28

标签: delphi fastreport

在Delphi中,我将TfrxUserDataSet分配给报告带:

var
  Band : TfrxDataBand;
begin
  Band := frxReport1.FindObject('MyBandName') as TfrxDataBand;
  Band.DataSet := frxUserDataSet1;
end;

之后我还需要将数据集分配给该频段上的所有MemoView。

var
  AMemo : TfrxMemoView;
begin
  AMemo:=Form1.frxReport1.FindObject('Memo3') as TfrxMemoView;
  AMemo.DataSet:=ABand.DataSet;
  //... and so forth, for all MemoViews on the report band
end;

但有没有办法在不知道名字的情况下迭代数据包上的所有备忘录? 我想我可以阅读报告的.FR3文件并使用其结构化规范,但我不愿意。

1 个答案:

答案 0 :(得分:1)

您可以迭代 ContainerObjects 集合以访问子组件。例如:

var
  I: Integer;
  Band: TfrxDataBand;
  Control: TfrxComponent;
begin
  Band := frxReport1.FindObject('MyBandName') as TfrxDataBand;

  for I := 0 to Band.ContainerObjects.Count - 1 do
  begin
    Control := Band.ContainerObjects[I];
    if Control is TfrxMemoView then
    begin
      TfrxMemoView(Control).DataSet := Band.DataSet;
      ...
    end;
  end;
end;