Wenn es funktioniert, dann funktioniert es eben. Du kannst dir auch FindComponent an genauer angucken.
Das einzige Problem was ich an deinem Code sehe ist, du solltest vorher prüfen ob die Komponente auch wirklich exisiert, bevor du auf sie zugreifst. Ansonsten gibt es eine böse Fehlermeldung.
//Edit:
Ich sehe gerade den Fehler. Components erwartet einen Index (Zahl), keinen Text. Also z. B. Self.Components[5].
Die Kunst ist nun herauszufinden welchen Index das Panel 'P_'+IntToStr(A)+'_'+IntToStr(B) hat.
//Edit 2:
Eine Möglichkeit der Suche, vorausgesetzt du nimmst nicht FindComponent, wäre:
Delphi-Quellcode:
var
i: Integer;
Gesucht: String;
begin
Gesucht := 'P_'+IntToStr(1)+'_'+IntToStr(5);
for i := 0 to Self.ComponentCount - 1 do
begin
if Self.Components[i].Name = Gesucht then
begin
ShowMessage('Die Gesuchte Komponente hat den Index: ' + IntToStr(i));
Break;
end;
end;
end;