Źle ten kod piszecie – metodę zmieniającą kolor fontu etykiet uzależniacie od nazw komponentów, a po drugie, ciągle dublujecie rzutowanie zamiast skorzystać z instrukcji wiążącej lub z absolute
dla pomocniczych zmiennych lokalnych. Wasze kody są niebezpieczne (mogą rzucić wyjątek) i nieuniwersalne, a to bardzo źle.
Tymczasem bardzo łatwo jest napisać metodę, która znajdzie wszystkie etykiety wewnątrz danego panelu i każdemu zmieni kolor na zadany – bezpieczną i uniwersalną. Macie przykład:
procedure TMainForm.SetPanelLabelsColor(APanel: TPanel; AFontColor: TColor);
var
InnerControl: TControl;
InnerLabel: TCustomLabel absolute InnerControl;
var
ControlIdx: Integer;
begin
for ControlIdx := 0 to APanel.ControlCount - 1 do
begin
InnerControl := APanel.Controls[ControlIdx];
if InnerControl.InheritsFrom(TCustomLabel) then
InnerLabel.Font.Color := AFontColor;
end;
end;
Bułka z masłem. :P