Nello Thanks very much for going the extra mile for me. That solution works well and save quite a few lines of code. My main problem was not realising that the FindComponents should have been called from the form component. I appreciate your always well considered assistance. Mark (Didn't respond earlier because I was out of the office - (Corrs!)) ----- Original Message ----- From: "Nello Sestini" <[EMAIL PROTECTED]> To: "Multiple recipients of list delphi" <[EMAIL PROTECTED]> Sent: Friday, October 12, 2001 10:36 PM Subject: Re: [DUG]: Array of labels in QR
> > > function GetMyLabel(Index:Integer): TQRLabel; > > > property MyLabels[Index: Integer]: TQRLabel read GetMyLabel; > > default; > > These two under Public Declarations? > > i'd make GetMyLabel Protected or Private and property Mylabels Public. > > Probably it doesn't much matter because you're not going > to access the property from outside the form anyway. > > > > > > > function GetMyLabel(Index:Integer):TQRLabel; > > > begin > > > // in production probably should do some error checking ... > > > return FindComponent(format('mylabel_%d',[Index]); > > > end; > > This under Implementation > > correct > > > Should it be "result := [...] > > oops - yes it should. (i've been writing C++ - i knew something > would creep in). > > > Should it be " [...] MyLabels.FindComponent ...etc"? > > no. FindComponent searches the component list by name. > > So you want to call the FindComponent method of the owner of your > QRLabels. This is the TForm. > > > I get error "Undeclared identifier - MyLabels" > > > If I leave MyLabels out I get error Undeclared identifier - > > FindComponent. > > > > I can see how FindComponent would work - I'm just tripped up on the > > declaration details, I think. > > see above. > > I regret winging this - it's too confusing. Here is a revised > version of the functions (that DO compile and even work) which > should be a lot clearer. > > Also, I've posted the full .pas and .dfm files here > http://roserox.co.th/dugnz/unit2.pas > http://roserox.co.th/dugnz/unit2.dfm > > > function TForm2.GetMyLabel(Index: Integer): TQRLabel; > var ret:TQRLabel; > begin > // in production probably should do some error checking ... > result:= FindComponent(format('qrlabel_%d',[Index])) as TQRLabel; > end; > > procedure TForm2.Button1Click(Sender: TObject); > var i:integer; > begin > for i:=1 to 2 do mylabels[i].caption:='foo'; > end; > > The QReport in this demo program has two labels on it - QRLabel_1 > and QR_Label_2 > > -ns > > > > > > > -------------------------------------------------------------------------- - > New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] > Website: http://www.delphi.org.nz > To UnSub, send email to: [EMAIL PROTECTED] > with body of "unsubscribe delphi" > Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/ > --------------------------------------------------------------------------- New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] Website: http://www.delphi.org.nz To UnSub, send email to: [EMAIL PROTECTED] with body of "unsubscribe delphi" Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/