Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Crear Form en tiempo de Ejecución (https://www.clubdelphi.com/foros/showthread.php?t=33115)

harvicoco 27-06-2006 23:24:05

Crear Form en tiempo de Ejecución
 
Amigos, quisiera saber si hay la posibilidad de crear un Form sabiendo el nombre de la clase del form; es decir:

Var Form:TForm;
Link:String;
Begin
Link:='TForm1';
Form:=TForm(Link).Create(Self);
End;

Eso es lo que hago y me sale error, no se si hay alguna forma de poder hacer eso; obviamente Link puede ser cualquier Formulario que esta dentro del Proyecto, solo que necesito asignarselo a la variable Form para poder trabajarlo. Gracias de antemano.

JCarlosas 28-06-2006 00:02:01

Hola
Por el nombre de la clase de ventana no se si sera posible pero de esta otra manera si lo es:

Código Delphi [-]
procedure TfrmTools.sbAmpliarTchartTemporalClick(Sender: TObject);
Var
 frmTchartAmpliados : TfrmTchartAmpliados;

begin
  frmTchartAmpliados := TfrmTchartAmpliados.Create(self);
    .
//HAcer aqui lo que haga falta antes de mostrar la ventana..
    .
  frmTchartAmpliados.Show;  //Mostrar la ventana

TfrmTchartAmpliados debe ser el nombre (Tipo) de una clase de ventana (Formulario) que tienes que haber diseñado previamente.
Debes incluir en la clausula uses de la unit donde pongas este codigo el nombre de la unit donde esta el formulario diseñado.

Debes ademas eliminar la creacion del formulario en el programa principal.

Creo que en esencia eso es todo.

Saludos
Juan Carlos

Neftali [Germán.Estévez] 28-06-2006 09:41:09

Se puede hacer lo que necesitas utilizando RTTI siempre y cuando la clase esté registrada.
Para acceder a la clase debes utilizar GetClass y para registrar una clase se usa el procedimiento RegisterClasses.

Creo que es más sencillo verlo con un ejemplo. En este caso se registra la clase en el DPR y desde el Form1 se crea el Form2 a partir del nombre de la clase.

harvicoco 28-06-2006 14:55:05

Gracias
 
Muchas gracias, me funcionó con el RegisterClass y el GetClass, ya me estaba por reventar la cabeza de tanto pensar jejeje, mil gracias


La franja horaria es GMT +2. Ahora son las 18:05:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi