Ver Mensaje Individual
  #1  
Antiguo 23-08-2011
ivantj24 ivantj24 is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 110
Reputación: 14
ivantj24 Va por buen camino
Arreglo de formularios, no se por que no funciona mi codigo :(

Holas que tal, expongo mi problema el cual en teoria esta bien planteado pero no se por que no funciona, lo que requiero es al crear un formulario, que se carguen todos los nombres de los formularios que uso dentro de un arreglo para despues trabajar con los formularios, declaro de esta forma los formularios dentro de un arreglo:

Cita:
public
Forms : array[0..6] of Tform;

//en el Oncreate del form princiopal, se genera el array con todos los forms, dentro:
procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin

Forms[0]:= frmUsuarios;
Forms[1]:= frmGasolineros;
Forms[2]:= frmEstaciones;
Forms[3]:= frmDepartamentos;
Forms[4]:= frmServiciosCategorias;
Forms[5]:= frmServicios;
Forms[6]:= frmTickets;
end;


y lo que pretendo hacer despues, ya une vez creado el arreglo con los nombre de mis formularios, lo que quiero es:

crear formularios, clientes, departamentos, servicios... etc etc etc

pero solo requiero un formulario activo, si un formulario esta creado, y si le doy de nuevo al boton para que se cree ese mismo formulario hago que se muestre, que resalte de nuevo el formulario ya creado, pero si quiero crear un formulario aparte del que tengo, la idea es que se elimine el anterior y me cree el nuevo.

si tengo formClientes creado, al darle al boton para que me cree el formDepartamentos, la idea es que elimine primero el formclientes, y se cree unicamente el formDepartamentos, para ello primero lo que intente fue saber que formulario estaba creado para eliminarlo y despues crear el nuevo y este fue mi codigo:

Cita:
var
i : integer;
begin
for i := 0 to 6 do
begin
//SI NO ESTA CREADO, QUE NO HAGA NADA
if not Assigned(Forms[i]) then
begin
//NO HACE NADA
end
else
{PERO SI YA ESTA CREADO UN FORMULARIO DIFERENTE, ENTONCES QUE SE ELIMINE, CON ELLO PRETENDO QUE SE ELIMINEN TODOS LOS FORMULARIOS QUE ESTEN ANTERIORMENTE ABIERTOS, CUALQUIERA QUE SEA, POR ESO USO EL CICLO FOR PARA QUE HAGA UN RECORRIDO EN TODOS}
Forms[i].Close;
end;
end;
entonces esa es mi idea, determinar cual esta creado y me lo elimine, y si es que ya esta creado, que lo resalte, Onshow, eso es lo que hago, pero mi problema como les decia, es que nombrando:

Forms[i]

nunca me lo toma como un formulario, en el Forms[i] deberian de estar todos los nombres de los formularios pero al parecer no lo estan, entonces no me cierra ni uno y se abren todos los formularios sin cerrarse los anteriores ya abiertos, bueno espero me puedan ayudar, a determinar si esta bien arreglo declarado, y saber por que nome elimina todos los formularios anteriores ya abiertos.
Responder Con Cita