Ver Mensaje Individual
  #10  
Antiguo 21-06-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita