Crear dinámicamente un componente visual

3732 vistas

Todos los componentes de Delphi pueden seer creados en ejecución. Para instanciar un componente, es suficiente con llamar al constructor de su clase. Pero para los componentes visuales es imprescindible definir su propiedad Parent.

El constructor de la clase de los componentes (Create) recibe por parámetro el componente propietario. No tenemos que confundir entre propietario y padre. El propietario es el componente que se encarfa de su destrucción cuando él mismo sea destruido. El padre es el componente contenedor.



delphi
  1. Var
  2.   MiBoton: TButton;
  3. procedure TForm1.Button1Click(Sender: TObject);
  4. begin
  5.   { El form será el propietario del botón }
  6.   MonBouton := TButton.Create(Self);
  7.   { pero será dentro de Panel1 donde queremos mostrarlo }
  8.   MonBouton.Parent := Panel1;
  9.   { ahora definimos las demás propiedades }
  10.   MonBouton.Caption := '¡Botón!';
  11.   MonBouton.Left := 10;
  12. end;



También podemos crearlo sin hacer referencia a una variable



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3.   With TButton.Create(Self) Do
  4.   Begin
  5.     Parent := Panel1;
  6.     Caption := '¡Botón!';
  7.     Left := 10;
  8.   End;
  9. end;