Hola Julià, muchas gracias por tu última respuesta y por el código. Resulta que es bastante similar a como lo hago yo. Te lo adjunto:
1.- Código de creación de Forms
Código:
procedure TMainForm.AbrirForm();
var
i, j : integer;
a : boolean;
begin
i := 0;
j := 1;
a := true;
while (a) do
begin
if (Screen.Forms[i].Name = PDatItem(TreeView1.Selected.data)
^.Pantalla) then
a := false
else
begin
if (i < (Screen.FormCount - 1)) then
i := i+1
else
begin
a := false;
i := 1000;
end
end
end;
if (i < 1000) then
Screen.Forms[i].Show
else
begin
i := 0;
While (i < listaclass.Count) and (listaclass[i].ClassName <>
PDatItem(TreeView1.Selected.data)^.TPantalla) do
inc(i);
if (i < listaclass.Count) then //hemos encontrado la clase
begin
While (Pantalla[j] <> nil) and (j <= 25) do
inc(j);
Application.CreateForm(TFormClass(listaclass[i]),Pantalla[j]);
IndicePantalla := j;
Pantalla[j].Show;
end
end
end;
El código de cierre de formularios, lo he puesto en otra de las respuestas.
Gracias Julià, si le vieses algo al código, por favor coméntamelo.
Un saludo.
E