You need to keep some list (and an array is a list) of pointers to the TFrmFuse
objects you are
creating or you cannot reference them.
So if we combine your code and some of the examples below
var
ListOfFuseItems:TList;
procedure TfmFuseConfig.FormShow(Sender: TObject);
Var i: Integer;
begin
ListOfFuseItems:=TList.Create;
for i := 0 to 7 do
ListOfFuseItems.Add(AddFuseItem(i)); //add the pointer to the new FuseItem
end;
end;
function TfmFuseConfig.AddFuseItem(pIndex: Integer): TFrmFuse;
//return the pointer to what you create
var
NewFuse : TFrmFuse;
begin
NewFuse := TFrmFuse.Create(Self);
with NewFuse do begin
Parent := Self;
Visible := True;
Align := alTop;
Name := 'FuseNo' + IntToStr(pIndex);
end;
result := NewFuse; //this returns the pointer to what you just created
end;
Now you can refer to any of your TFrmFuse objects with (example references i-th
one)
TFrmFuse(ListOfFuseItems[i])
and
TFrmFuse(ListOfFuseItems[i]).ItemName
will refer to the ItemName TPanel on the i-th TFrmFuse
Last time I did this I used the equivalent of
NewFuse := TFrmFuse.Create(nil);
and then freed them all in my own destructor
HTH
Wayne
Borland's Delphi Discussion List <[email protected]> on Monday, 2 July 2007 at
11:32 p.m. +0000
wrote:
>OK Thsnks for your help, I can now add the frames at runtime
>I am adding them in the formShow event at the moment just for testing.
>
>I still can't access the frame's sub components.
>As you can see I am setting the subcomponents true.
>How do I access these properties from my main form?
>
>In my main form show event I load up 8 instances of the frame:
>
>procedure TfmFuseConfig.FormShow(Sender: TObject);
>Var i: Integer;
>begin
>for i := 0 to 7 do
> AddFuseItem(i);
>end;
>
>procedure TfmFuseConfig.AddFuseItem(pIndex: Integer);
>begin
>FuseList := TFrmFuse.Create(Self);
>with FuseList do
> begin
> Parent := Self;
> Visible := True;
> Align := alTop;
> Name := 'FuseNo' + IntToStr(pIndex);
> end;
>end;
>
>This leaves me with 8 frames visible on my form, I assume with Names of
>FuseNo0 throught to FuseNo7.
>How do I access these frames and their sub components? I have tried
>populating their properties in the AddFuseItem procedure but I just get a
>syntax error saying undeclared identifier.
>
>E.g.
>
>procedure TfmFuseConfig.AddFuseItem(pIndex: Integer);
>begin
>FuseList := TFrmFuse.Create(Self);
>with FuseList do
> begin
> Parent := Self;
> Visible := True;
> Align := alTop;
> Name := 'FuseNo' + IntToStr(pIndex);
> ItemDesc.Caption := Name;// this line errors......
> end;
>end;
>
>
>
>This is the source for the frame...........................................
>unit PICFuseItem;
>
>interface
>
>uses
> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
>
> Dialogs, StdCtrls, ExtCtrls;
>
>type
> TfrmFuse = class(TFrame)
> pnlFuseEntry: TPanel;
> cmbValue: TComboBox;
> pnlName: TPanel;
> pnlDescription: TPanel;
> private
> { Private declarations }
> public
> { Public declarations }
> Constructor Create(AOwner: TComponent);
> property ItemName: TPanel Read pnlName Write pnlName;
> property ItemValues: TComboBox Read cmbValue Write cmbValue;
> property ItemDesc: TPanel Read pnlDescription Write pnlDescription;
> end;
>
>implementation
>
>{$R *.dfm}
>Constructor TfrmFuse.Create(AOwner: TComponent);
>begin
> inherited;
> pnlName.SetSubComponent(True);
> cmbValue.SetSubComponent(True);
> pnlDescription.SetSubComponent(True);
>end;
>
>end.
>
>-----Original Message-----
>From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf
>Of zayin
>Sent: 30 June 2007 02:10
>To: 'Borland's Delphi Discussion List'
>Subject: RE: Component or Frame Arrays
>
>Oh,
>
>And I forgot. As to the array.
>
>Sure you can make an array if you want, static if you know that bound or
>dynamic if not.
>
>Or a TList. That is what I would use.
>
>var
> frameList:TList;
>
>frameList:=TList.Create;
>
>..loop
>
>FuseList := TFrmFuse.Create(Self);
>frameList.Add(FuseList);
>with FuseList do
>
>
>And in the destroy or close of the form, walk the frameList and free all the
>frames.
>
>Ciao,
>
>Mark
>
_______________________________________________
Delphi mailing list -> [email protected]
http://www.elists.org/mailman/listinfo/delphi