访问 DataBand 上的所有 MemoView

Access all MemoViews on a DataBand

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

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

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

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 文件并使用其结构化规范,但我不想这样做。

您可以迭代 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;