Hola
Cita:
Empezado por sergio_015
O sea que si comparar=58 y cumple con la condicion entonces cambiara un shape, pero y el shape se llama NOM58 que coincidiria con el valor de comparar, un poco revoltoso pero es necesario , es por eso q aclaraba lo del nombre
|
Intuyo que aparte de comprobar si es un TShape, miras el número con que lo has nombrado (58 en el ejemplo) para ver si cumple cierta condición (digamos menor de 200 o algo así). Para no complicarte la vida dando nombres a todos los TShapes, incluso para agilizar las comparaciones, quizás te convenga hacer uso de la propiedad
Tag, común a todos los descendientes de TComponent. Está pensada para cosas como estas, basta con que asignes (y de un tirón mediante el Object Inspector tras seleccionar los TShapes deseados) un número concreto (pongamos el 7) y ya tienes diferenciados los shapes, incluso puedes crear más categorías (... tantas como números alberga un tipo Integer
). Siguiendo el ejemplo que te puso Marcos (con la corrección de Román
):
Código Delphi
[-]procedure TForm1.Button1Click(Sender: TObject);
Var
nConta : Integer;
AComponent : TComponent;
begin
for nConta:=0 to form1.ComponentCount -1 do
begin
AComponent := form1.Components[nConta];
if (AComponent is TShape) AND (AComponent.Tag = 7) then
TShape(AComponent).brush.Color := ClGreen;
end;
end;
En el ejemplo utilizo la variable
AComponent para guardar el valor de
form1.Components[nConta], para evitar llamar varias veces la misma propiedad
Components[n], manías mías
.
Saludos