El procedimiento que muestras, lo envías desde algún manejador de eventos o es un manejador de eventos de algún componente que hayas creado?
A simple vista no le veo nada raro...
Código Delphi
[-]
procedure TForm1.ActivarEtiquetas(Sender:TObject; Estado, Todas: Boolean);
var
Contenedor: TPanel;
Etiqueta: TLabel;
I: Integer;
begin
if Todas then
begin
Contenedor := (Sender as TPanel);
for I := 0 to Contenedor.ControlCount - 1 do
if Contenedor.Controls[i] is TLabel then
TLabel(Contenedor.Controls[i]).Enabled := Estado
end
else
(Sender as TLabel).Enabled := Estado
end;
La propiedad
ControlCount te dice cuantos controles tienen como
Parent al control especificado, entonces,
Contenedor.ControlCount te indica cuantos controles tienen a
Contenedor como
Parent...
Ahora, si te fijas, le hice un pequeño cambio a tu código, y este fue que, luego de verificar que
Contenedor.Controls[i] is TLabel, ya no es necesario usar el operador
as para convertir el control a un
TLabel, ya es seguro hacer
TLabel(Contenerdor.Controls[i]).Enabled := Estado.
Saludos...