Crear Formularios y controles en tiempo de ejecución

Hola veremos esta vez como crear formularios en tiempo de ejecución y controles dentro de estos. Cuando comenzamos un nuevo proyecto usualmente y en dependencia del tipo de Aplicación el IDE nos provee de un formulario preexistente al que llamaremos principal. Si queremos agregar un nueva forma vamos a File->New->”Vcl Form – Delphi”, bueno supongo que ya sabiamos eso.

Por defecto estos formularios se generan como autocreados, osea no necesitamos crearlos ya están ahi para nosotros, ejemplo supongamos que ya tenemos creado un formulario fMenuGeneral para mostrarlo solo hariamos esto:

  1. fMenuGeneral.Show;

Y todo perfecto al ejecutarse esta sentencia se mostrará la nueva forma, pero y si el formulario no está autocreado entonecs obtendriamos algo así: First chance exception at $005F859F. Exception class $C0000005 with message ‘access violation at 0x005f859f: read of address 0x000003d8’. Process Project1.exe (11428) ya que no tendriamos el formulario previamente creado y tendriamos que crearlo primeramente por nosotros mismos, ahora tendriamos que escribir solo una linea más:

  1. //Creamos primero la nueva forma
  2. {Create() nos pide un parametro para indicar quien es el Owner("Dueño")de
  3.  este nuevo formulario, podríamos pasar con valores "Nil" osea "Nadie" o
  4.  el formulario desde la que se creando "Form2" }
  5. fMenuGeneral:=TfMenuGeneral.Create(Form2);
  6. //Mostramos la nueva forma
  7. fMenuGeneral.Show;

Con los controles se aplica lo mismo, ejemplo botones, edits, etc sería así:

  1. procedure TForm2.Button2Click(Sender: TObject);
  2. var
  3.   Botón: TButton;
  4. begin
  5.   // Crear el botón
  6.   { Create() nos pide un parametro para indicar quien es el Owner("Dueño")de
  7.     este nuevo formulario, podríamos pasar con valores "Nil" osea "Nadie" o
  8.     el formulario desde la que se creando "Form2" }
  9.   Botón := TButton.Create(Form2);
  10.  
  11.   // vamos a Setear algunas propiedades e iré explicando
  12.  
  13.   // La Propiedad Parent indica quien será el Padre del nuevo control (TButton)
  14.   // Prueba saltarla y veras que al no conocerse donde será mostrada, no podrás ver el boton
  15.   Botón.Parent := Form2;
  16.   // Nombre del boton
  17.   Botón.Caption := ‘Boton’;
  18.   { Aquí hay tela por donde cortar solo muestro, por ahora solo debes entender que
  19.     estamos asignando al evento unclick un procedimiento que ya teniamos y que es
  20.     el propio evento que crea los botones, como verás todos los botones comparten
  21.     el mismo evento, interesante! }
  22.   Botón.OnClick := Button2Click;
  23.  
  24.   // Ahora seteamos estas propiedades para que se generen botones con posiciones y
  25.   // dimensiones aleatorias
  26.   Botón.Left := random(200);
  27.   Botón.Top := random(200);
  28.   Botón.Height := random(200);
  29.   Botón.Width := random(200);
  30. end;

Source clave: 12345

Deja una respuesta

Tu dirección de correo electrónico no será publicada.