Cómo implementar el evento OnCreate para un objeto Delphi TFrame

TFrame es un contenedor para componentes; se puede anidar dentro de formularios u otros marcos.

Un marco, como un formulario, es un contenedor para otros componentes. Los marcos se pueden anidar dentro de formularios u otros marcos, y se pueden guardar en la paleta Componente para una fácil reutilización.

Missing OnCreate

Una vez que comience a usar marcos, notará que no hay OnCreate evento que puede usar para inicializar sus marcos.

En resumen, la razón por la que un marco no tiene un evento OnCreate es que no hay un buen momento para activar el evento.

Sin embargo, por anulando el método Crear puedes imitar el evento OnCreate. Después de todo, OnCreate for Forms se activa al final del constructor Create, por lo que anular Create for Frames es como tener el evento OnCreate.

Aquí está el código fuente de un marco simple que expone una propiedad pública y anula el constructor Crear:

 unidad WebNavigatorUnit;

interfaz

 

 usos

   Windows, Mensajes, SysUtils, Variantes, Clases,

   Gráficos, controles, formularios, cuadros de diálogo, StdCtrls;

 

 tipo

   TWebNavigatorFrame = clase(TFrame)

    urlEdit: TEdit;
  
privado

     aferrar: cuerda;

    
procedimiento SetURL (const Valor: cuerda);

  
público

     constructor Crear (AOwner: TComponent); anular;

  
publicado

     propiedad URL: cadena de lectura aferrar escribir SetURL;

  
final;

implementación$ R * .dfm

 

 constructor TWebNavigatorFrame.Create (AOwner: TComponent);

empezar

   heredado Crear (AOwner);

 
 // Código "OnCreate"

   URL: = 'http://delphi.about.com';

 final;

procedimiento TWebNavigatorFrame.SetURL (const Valor: cuerda);

empezar

   FURL: = Valor;

   urlEdit.Text: = Valor;

 final;

final.

El "WebNavigatorFrame" actúa como un lanzador de sitios web que aloja una edición y un control de botón. Nota: si eres nuevo en marcos, asegúrate de leer los siguientes dos artículos: desarrollo de componentes visuales usando marcos, reemplazando hojas de pestañas con marcos.