Dynamiske komponenter på en QuickReport
Hej,Jeg har et problem med at sætte caption på dynamisk oprettede labels på en QuickReport ved BeforePrint.
Min QR har en detailband hvor der skal være 20 labels, og ved BeforePrint bliver disses caption udfyldt med data fra en database. Det virker fint hvis jeg placerer alle 20 labels på min form, men jeg vil gerne oprette dem runtime.
Jeg får dog en fejl "Access violation at address..."
Jeg opretter mine labels sådan i FormCreate:
var
newLabel: TQRLabel;
...
for i := 1 to 21 do
begin
newLabel := TQRLabel.Create(DetailBand);
TControl(newLabel).Parent := DetailBand;
newLabel.Name := 'QRLabel' + IntToStr(i);
newLabel.Caption := '';
end;
Og vil ved BeforePrint sætte caption:
var
sr: Boolean;
i, LabelNr: Integer;
LabelName: String;
...
sr := Query.FindFirst;
while sr do
begin
LabelNr := Query.Fields[1].AsInteger;
LabelName := 'QRLabel' + IntToStr(LabelNr);
TQrLabel(FindComponent(LabelName)).Caption := Query.Fields[0].AsString;
sr := Query.FindNext;
end;
Men ved TQrLabel(FindComponent(LabelName)) opstår der en access violation - som om label'en ikke findes på formen. Og jeg er sikker på at LabelNr er mellem 1 og 21.
Det duer ikke at oprette komponenterne ved BeforePrint pga. måden detailbanden virker.
Håber der er nogle forslag derude. På forhånd tak.