Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   multiples instancias de un Form (https://www.clubdelphi.com/foros/showthread.php?t=29717)

dark_c 30-01-2006 23:41:07

multiples instancias de un Form
 
hola, quisiera que alguien me explique si es posible crear multiples instancias de una misma 'Form', digamos ejecutar este sencillo codigo:

Código:


for i:=0 to 4 do
begin
  Application.CreateForm(TForm1, Form1);
end;

o este:
Código:


for i:=0 to 4 do
begin
  TForm1.Create(Applicacion);
end;

la pc se congela al intentar crear la 2da form, puedo entender mas o menos a que se debe esto, pero no estoy seguro de ello:o .
he probado con ventanas MDI y no pasa lo mismo, alguien sabe si es posible hacer esto sin tener que usar MDI?:confused:

seoane 31-01-2006 00:16:59

El codigo que pones puede ejecutarse sin problemas :D Aunque no se porque querrias hacer eso. Creas varios forms, pero Form1 solo haria referencia al ultimo. Asi que tendrias problemas para utilizarlos y sobre todo para destruirlos.

De todas formas si es por curiosidad, deberia de poner la propiedad visible a True para ver los formularios que vas creando. El siguiente codigo cre una bonita cascada de ventanas :D . Aunque como ya dije es incrorrecto crear formularios y no destruirlos despues.

Código:

for i:=1 to 10 do
begin
  Application.CreateForm(TForm1, Form1);
  Form1.Visible:= TRUE;
  Form1.Top:= Form1.Top + (10*i);
  Form1.Left:= Form1.Left + (10*i);
end;


fabianbbg 31-01-2006 00:34:32

Hola DarK_c :
Antes que nada.. bienvenido al foro, espero ayudarte en tu duda.

escribiste:

Cita:

Empezado por dark_c
hola, quisiera que alguien me explique si es posible crear multiples instancias de una misma 'Form',


Si.. no deberias tener mayores problemas

Cita:

Empezado por dark_c
digamos ejecutar este sencillo codigo:

Código:


for i:=0 to 4 do
begin
  Application.CreateForm(TForm1, Form1);
end;

o este:
Código:


for i:=0 to 4 do
begin
  TForm1.Create(Applicacion);
end;

la pc se congela al intentar crear la 2da form, puedo entender mas o menos a que se debe esto, pero no estoy seguro de ello:o .
he probado con ventanas MDI y no pasa lo mismo, alguien sabe si es posible hacer esto sin tener que usar MDI?:confused:


Mmmm no se porque se te congela la aplicacion..¿ no te tira algun error?
Podrias probar con este codigo.. a ver si te sirve:

Código Delphi [-]
var
     i:integer;
     formNuevo:tform;
begin
     for i:=0 to 4 do
     begin
          Application.CreateForm(TForm1, formnuevo);
          formnuevo.Name:='nuevo'+inttostr(i);
          formnuevo.Caption:=formnuevo.Name;

          formnuevo.Top:=(20+i)*10;
          formnuevo.Show;

     end;

Fijate si te sirve y cualquier cosa.. preguntá nomas sin problemas..

Saludos..
Fabián

dark_c 31-01-2006 09:42:14

Estoy muy confundido, no se que paso con mi compilador:confused: , ambos teneis razon, el codigo que expuse compila y corre bien, el unico detalle es el que hace notar seoane, que Form1, hace referencia al ultimo form creado, (y se pierde la referencia al los forms anteriores), pero segun la ayuda de Delphi, los forms que hayan sido creados pasando un 'Owner' como parametro al constructor, seran liberados automaticamente (por ese Owner)... bla bla bla..., ¿es esto cierto?, supongo que si... de cualquier forma, en el evento OnClose() de la form, he asignado 'caFree' a la variable 'Action'... espero que asi como lo hize este todo bien :) (no necesito accesar nada dentro del Form, por eso no necesito las referencias) de todos modos gracias fabianbbg, haciendo pruebas con el codigo hize algo mal y fue cuando se congelo la pc, sin ningun aviso, justo al llamar el metodo Form1.Create(Application), pero fue por haber hecho algo mal dentro del constructor... muchas gracias a ambos por haber contestado.


La franja horaria es GMT +2. Ahora son las 05:42:58.

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