Delphi - color de fondo de varios objetos con una sola line

 
Vista:

color de fondo de varios objetos con una sola line

Publicado por alberto ortiz (66 intervenciones) el 11/04/2007 15:13:13
Hola, estoy trabajando con un formulario padre(MDI) y las demas las he establecido MDIChild para que al llamarlas queden dentro de la forma principal, ahi tengo un menu para cambiar el color de fondo mediante un ColorDialog, lo que necesito es que todos los forms cambien de color de fondo segun el valor devuelto por el colordialog, ese no es mi problema lo que pasa es que yo lo hago manual es decir uno a uno mas o menos asi:
if colordialog1.Execute then
begin
form3.Color:=colordialog1.Color;
form4.Color:=colordialog1.Color;
form5.Color:=colordialog1.Color;
form6.Color:=colordialog1.Color;
form7.Color:=colordialog1.Color;
end;
Ahora la cuestion es: ¿Hay alguna forma de hacer esto mismo pero sin escribir varias lineas, no se con un arreglo, con un ciclo o algo asi, y si esto es posible:¿funcionaria para cambiar las misma propiedad de varios objetos de un form?, por ejemplo el tamaño de fuente de todos los Tlabel y Tedit de un form...

Espero me puedan ayudar

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:color de fondo de varios objetos con una sola l

Publicado por Dr Juzam (821 intervenciones) el 11/04/2007 16:34:22
Prueba con esto:

var
I: integer;
begin
for I := 0 to Application.ComponentCount - 1 do
if Application.Components[I] is TForm then
(Application.Components[I] as TForm).Color:= clRed; //O el color que quieras

También vale para el resto de componentes, solo hay que tocar un poco el código. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:color de fondo de varios objetos con una sola l

Publicado por M@rceloL (4 intervenciones) el 11/04/2007 19:44:12
Para recorrer las formas hijas también puede usarse TForm.MDIChildren y MDIChildCount:

for Ind := 0 to FormPrinc.MDIChildCount - 1 do
FormPrinc.MDIChildren[Ind].Color:=clRed;

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar