0

我有以下代码

procedure Tar_ardemo.qr_ardemoBeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
var
    QR: TquickRep;
    QB2: TQRBand;
    QB3: TQRChildBand;
    QL: TQRLabel;
begin
  with artikste do
  begin
    close;
    sql.Clear;
    sql.add('SELECT * FROM Artikels');
    open;
    first;
  end;

  QR := qr_ardemo;
  QB2 := QRBAND2;
  QB3 := TQRchildband.Create(QR);
  QB3.ParentBand := QB2;
  QB3.Height := 40;

  QL := TQRLabel.Create(QR);
  QL.Parent := QB3;
  QL.Left := 300;
  QL.Top := 1;
  QL.Width := 81;
  QL.Height := 23;
  QL.Caption := 'QRLabeZZ';
end;

我想在运行时创建一个 Childband (QB3) 和一个 QRLabel (QL)。当我在 Delphi 中运行脚本时,我只是在输出中看不到它。当我将 QL.Parent := QB3 更改为 QB2 时,我在 QRBand2 中看到了输出,但我想在刚刚创建的 Childband QB3 中看到它。我错了什么?我想不明白。

谢谢

4

1 回答 1

0

这可能是一个解决方案:

procedure Tar_ardemo.qr_ardemoBeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
var
    QR: TquickRep;
    QB2: TQRBand;
    QB3: TQRChildBand;
    QL: TQRLabel;
    QS : string;
begin
  with artikste do
  begin
    close;
    sql.Clear;
    sql.add('SELECT * FROM Artikels');
    open;
    first;
  end;

  QR := QR_ARDEMO;
  QB2 := QRBAND2;

  QB2.HasChild := true;
  QB2.ChildBand.Height := 23;
  QL := TQRLabel.Create(QR);
  QL.Parent := QB2.ChildBand;
  QL.Left := 100;
  QL.Top := 1;
  QL.Width := 81;
  QL.Height := 23;
  QL.Caption := 'QRLabeXX';

  QB2.ChildBand.HasChild := true;
  QB2.ChildBand.ChildBand.Height := 23;
  QL := TQRLabel.Create(QR);
  QL.Parent := QB2.ChildBand.ChildBand;
  QL.Left := 100;
  QL.Top := 1;
  QL.Width := 81;
  QL.Height := 23;
  QL.Caption := 'QRLabeYY';

  QB2.ChildBand.ChildBand.HasChild := true;
  QB2.ChildBand.ChildBand.ChildBand.Height := 23;
  QL := TQRLabel.Create(QR);
  QL.Parent := QB2.ChildBand.ChildBand.ChildBand;
  QL.Left := 100;
  QL.Top := 1;
  QL.Width := 81;
  QL.Height := 23;
  QL.Caption := 'QRLabeZZ';
end;

end.

这行得通(万岁)。但现在的问题是:我如何得到一个 childband.chhildband ......childband 的数组。没有像 Childband[x] 这样的 Childband 数组。或者有没有??正如我所写的,可能有很多 Childbands [n]。它必须是动态的,并且......在打印第一个子带之后,必须销毁它们,然后再打印下一个子带以用于下一个记录(Artikel)。

于 2022-02-26T07:49:00.017 回答