Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problema con Array de Foms (https://www.clubdelphi.com/foros/showthread.php?t=77052)

glopez 16-12-2011 13:46:31

Problema con Array de Foms
 
Tengo implementado un Array de forms de la siguiente forma

Array_Ventanas : Array [0..Maximo_Ventanas_abiertas] of Tform;

En esta array voy guardando las ventanas que abro desde mi aplicacion, que pueden ser de clientes, proveedores articulos...
Las creo de la siguiente forma:

Array_Ventanas[x] := TFArticulos.Create(Self); // si es un articulo
Array_Ventanas[x] := TFClientes.Create(Self);// si es un cliente
...
El problema que tengo, es que si quiero acceder a por ejemplo a un label que está en todos mis forms (Label1) tengo que hacerlo de la siguiente forma:

TFArticulos(Array_ventanas[x]).Label1.Caption:='Prueba'; // si es un articulo
TFClientes(Array_ventanas[x]).Label1.Caption:='Prueba'; // si es un cliente
...

Es decir tengo que saber que tipo de form está en cada posición del array con lo que tengo un monton de lineas duplicadas.
¿Esto se puede hacer de otra forma utilizando punteros u otro método para simplificar al máximo el código?

Gracias.

ecfisa 16-12-2011 15:01:55

Hola glopez.

En principio no es necesario que declares un arreglo para los forms, Delphi ya permite acceder a ellos mediante la propiedad vectorial Forms de la clase TScreen.
Código Delphi [-]
// Mostrar los forms
var
  i: Integer;
begin
  for i:= 0 to Screen.FormCount-1 do
    Screen.Forms[i].Show;
...

// para tu caso podrías hacer:
begin 
   TFArticulos(Screen.Forms[1]).Label1.Caption:='Prueba';
...

En cuanto a tu consulta, revisá si te sirve este enlace.

Saludos.

glopez 19-12-2011 10:20:41

En realidad lo que me quiero ahorrar es tener que poner "TFArticulos(...." para poder acceder a los componentes del Form.


La franja horaria es GMT +2. Ahora son las 12:56:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi