Crear una ventana a través de su nombre de clase
Artículo por Club Developers · 31 diciembre 2005
5149 vistas
Mirando de cerca la unidad Classes veremos:
- procedure RegisterClass(AClass: TPersistentClass);
Esta función permite registrar una clase para que ésta pueda ser usada.
- function FindClass(const ClassName: string): TPersistentClass;
Esta función permite localizar una clase por su nombre. FindClass busca en las clases registradas del sistema.
Mecanismo:
Llamando a RegisterClass, la clase será registrada para el registro de la VCL. El método FindClass intentará localizar dentro de éste la clase de nombre pasado por parámetro. Si la clase no se encuentra, FindClass provocará una excepción.
El siguiente código muestra este mecanismo y permite encontrar una ventana por su nombre de clase.
Recomendaciones:
En un nuevo proyecto, crear 2 formularios nuevos (TForm2 y TForm3) y sus respectivas unidades (Unit2 y Unit3).
El TForm1 (Unit1), ponemos un TEdit y un TButton.
Reemplazamos el código de l aUnit1 por el mostrado aquà debajo.
Uso:
En la ejecución tendremos que rellenar el TEdit con el valor que queramos (TForm2 o TFoem3) y pulsar el TButton.
- procedure RegisterClass(AClass: TPersistentClass);
Esta función permite registrar una clase para que ésta pueda ser usada.
- function FindClass(const ClassName: string): TPersistentClass;
Esta función permite localizar una clase por su nombre. FindClass busca en las clases registradas del sistema.
Mecanismo:
Llamando a RegisterClass, la clase será registrada para el registro de la VCL. El método FindClass intentará localizar dentro de éste la clase de nombre pasado por parámetro. Si la clase no se encuentra, FindClass provocará una excepción.
El siguiente código muestra este mecanismo y permite encontrar una ventana por su nombre de clase.
Recomendaciones:
En un nuevo proyecto, crear 2 formularios nuevos (TForm2 y TForm3) y sus respectivas unidades (Unit2 y Unit3).
El TForm1 (Unit1), ponemos un TEdit y un TButton.
Reemplazamos el código de l aUnit1 por el mostrado aquà debajo.
Uso:
En la ejecución tendremos que rellenar el TEdit con el valor que queramos (TForm2 o TFoem3) y pulsar el TButton.
delphi
unit Unit1; interface uses  Unit2, unit3, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls; type  TForm1 = class(TForm)   Edit1: TEdit;   Button1: TButton;   procedure FormCreate(Sender: TObject);   procedure Button1Click(Sender: TObject);  private  public  end; var  Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin  RegisterClass(TForm2);  RegisterClass(TForm3); end; procedure TForm1.Button1Click(Sender: TObject); var  f: TFormClass; begin  try   f := TFormClass(FindClass(Edit1.text));   with f.Create(self) do Show;  except   Raise;  end; end; end.