• Sábado 21 de Diciembre de 2024, 17:00

Autor Tema:  Crear Objetos En Tiempo De Ejecución  (Leído 1723 veces)

Deiv

  • Miembro activo
  • **
  • Mensajes: 67
  • Nacionalidad: bo
    • Ver Perfil
Crear Objetos En Tiempo De Ejecución
« en: Domingo 29 de Julio de 2007, 18:44 »
0
Hola,
El siguiente código:
Código: Text
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   NuevoForm: TForm;
  4.   NuevoBoton: TButton;
  5. begin
  6.   NuevoForm := TForm.Create(nil);
  7.   NuevoForm.Parent := nil;
  8.   NuevoForm.Left := 100;
  9.   NuevoForm.Top := 100;
  10.   NuevoForm.width := 500;
  11.   NuevoForm.Height := 400;
  12.   NuevoForm.Caption:='Nuevo Formulario';
  13.   NuevoForm.Name := 'MiForm';
  14.   NuevoForm.FormStyle:= fsStayOnTop;
  15.   NuevoForm.Show;
  16.  
  17.   NuevoBoton := TButton.Create(NuevoForm);
  18.   NuevoBoton.Parent := NuevoForm;
  19.   NuevoBoton.Left := 100;
  20.   NuevoBoton.Top := 100;
  21.   NuevoBoton.Caption:='Clickme';
  22.   NuevoBoton.Name := 'MiBoton';
  23. end;
  24.  
Crea un Nuevo Formulario con un Botón dentro, todo en tiempo de ejecución.

1.- ¿Cómo DESTRUYO (Free=donde coloco?) estos objetos al cerrar la 2da ventana (NuevoForm) creada?. Lo que pasa es que cada vez que clicko el Button1 me crea muchos Forms incluido su botón. Lo que necesito es crear una sola vez, por mucho que le dé n-veces click al Button1.
2.- No recuerdo cual es la propiedad de un Form que por ejemplo AL CREAR el 2do Form:
.....2a) ¿Cómo ubico por encima del principal?, es acaso...FormStyle:= fsStayOnTop? y  
.....2b) ¿Cómo deshabilito el Form principal mientras esté activo el 2do Form hasta que lo cierre?

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Crear Objetos En Tiempo De Ejecución
« Respuesta #1 en: Lunes 30 de Julio de 2007, 16:18 »
0
1) Par adestruir usa el evento onDestroy o similar del form principal
2) para desactivar el form principal mientras usas el segundo, en vez de usar Show(), usa ShowModal().

Deiv

  • Miembro activo
  • **
  • Mensajes: 67
  • Nacionalidad: bo
    • Ver Perfil
Re: Crear Objetos En Tiempo De Ejecución
« Respuesta #2 en: Lunes 30 de Julio de 2007, 19:24 »
0
OK.....,
Pero en que lugar del código coloco esas instrucciones?

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Crear Objetos En Tiempo De Ejecución
« Respuesta #3 en: Lunes 30 de Julio de 2007, 22:39 »
0
Citar
Pero en que lugar del código coloco esas instrucciones?
Citar
en vez de usar Show(), usa ShowModal().
Código: Text
  1.  
  2. NuevoForm.Name := 'MiForm';
  3.  NuevoForm.FormStyle:= fsStayOnTop;
  4.  NuevoForm.ShowModal;
  5.  
  6.  
Saludos.