Hola.
Antes de nada, comentarte
que utilices los TAG's cuando añadas código delphi a los mensajes.
Otra cosa (no se si porque has puesto el código de memoria), pero creo que este código (si lo tienes así en el programa) te va a dar problemas. O fallará directamente.
Código Delphi
[-]
Bit := Tbutton.Create(Tpanel);
Bit.Parent := Tpanel;
Bit.Left := 1;
Bit.Top := 1;
Bit.Height := 25 ;
Bit.Width := 25 ;
En concreto la línea que asigna el Parent, debe fallar o no funcionará como piensas.
En cuanto a lo que necesitas, para contar los Paneles están utilizando
ComponentCount y
Components[i].
Para contar los botones en el interior de un
TPanel, debes usar lo mismo, pero utilizando esa misma propiedad del contenedor. En este caso del
TPanel.
Si utilizas un cóidigo como este:
Código Delphi
[-]procedure TForm1.FormCreate(Sender: TObject);
var
pnl:TPanel;
Bit: Tbutton;
begin
Randomize;
for var i:integer := 0 to 4 do begin
pnl := Tpanel.Create(Self);
pnl.Name := 'Panel_' + i.ToString;
pnl.Parent := Self;
pnl.Left := 1;
pnl.Top := 1;
pnl.Height := 75 ;
pnl.Width := 25 ;
pnl.Align := alTop;
pnl.Caption := pnl.Name;
for var j:integer := 0 to Random(5) do begin
Bit := Tbutton.Create(pnl);
bit.Name := 'Button_' + i.ToString + '_' + j.ToString;
Bit.Parent := pnl;
Bit.Left := (26*j);
Bit.Top := 1;
Bit.Height := 25 ;
Bit.Width := 25 ;
Bit.Caption := j.ToString;
end;
end;
var c:integer := 0;
var b:integer := 0;
for var i:integer := 0 to (ComponentCount -1) do begin
if (Components[i] is TPanel) then begin
pnl := TPanel(Components[i]);
Inc(c);
b := 0;
for var j:integer := 0 to (pnl.ComponentCount -1) do
if (pnl.Components[j] is TButton) then
Inc(b);
pnl.Caption := 'Este panel tiene ' + b.ToString + ' botones';
end;
end;
Self.Caption := 'Se han encontrado ' + c.ToString+ ' paneles';
end;
Tienes como contar los paneles (aparece en el caption del form) y como contar los botones de cada panel (que aparece en el caption del propio Panel).
El resultado será algo similar a esto: