Realmente, debería prohibirse el uso de FindComponent
.
Este método lo que hace es recorrer todos los componentes del formulario hasta encontrar el que tenga el nombre dado. Si tienes 10 objetos a buscar, entonces recorres 10 veces todos los componentes, y no digamos si tienes mil. Para eso, mejor los recorres una sóla vez:
Código Delphi
[-]
for I := 0 to ComponentCount - 1 do
begin
if SameText(Components[i].Name, 'CartaMesa' + IntToStr(I)) then
TImage(Componente).Picture.LoadFromFile(...);
end;
Aún así, esto debería usarse sólo para algo ocasional. Si, por ejemplo, estás diseñando un juego de cartas, es de suponer que vas a tener que referirte a los componentes TImage que las representan múltiples veces. Entonces es mejor declarar un arreglo de objetos TImage:
Código Delphi
[-]
Cartas: array[1..10] of TImage;
e inicializarlos, por ejemplo, en el constructor del formulario:
Código Delphi
[-]
Cartas[1] := CartaMesa1;
Cartas[2] := CartaMesa2;
...
Cartas[10] := CartaMesa10;
Es una larga asignación, pero en el resto de la aplicación puedes ya usar las cartas directamente:
Código Delphi
[-]
for I := 1 to 10 do
begin
Carta[i].Picture.LoadFromFile(...);
end;
Incluso, si la asignación inicial es demasiado larga, quizá podrías colocar todas las cartas en un contenedor como un TPanel e inicializar así:
Código Delphi
[-]
for I := 0 to Panel.ControlCount - 1 do
TImage(Panel.Control[i]).LoadFromFile(...);
// Saludos