FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Crear Objeto por su nombre de clase
Hola:
Actualmente tengo dos formulario (TForm1 y Tform2) y me gustaria crearlos con un único procedure: Ejemplo procedure CrearFormulario(Form : TForm) begin Form := TForm.Create(self); end; // Este ejemplo funciona, pero me lo crea con la clase heredada TForm y no la que correspondería que seria: Form := TForm1.Create(self); Form := TForm2.Create(self); Hay alguna forma de crear el objeto sin saber su clase? NombreClase := Classname(Form); Form := NombreClase.Create(self); Un saludo, JL |
#2
|
|||
|
|||
Hola...
Tendrías que construir una fabrica de objetos (o clases ), en la cual registrar los nombres de clase de la forma con su respectiva clase y luego solo las creas usando el nombre de la clase: Algo como:
Ahora, en tu caso la función que quieres usar puedes mandarle el tipo de la forma que quieres crear:
Para llamar la función solo haces:
Saludos... |
#3
|
||||
|
||||
Yo las creo a partir del nombre de un TAction que tenga el mismo nombre de la forma que voy a crear. Todos los action les asigno el mismo evento OnExecute
Código:
procedure TfrmMenu.actAbrirVentanaExecute(Sender: TObject); begin CrearVentana(TAction(Sender).Name).Show end; function TfrmMenu.CrearVentana(sForma: string): TForm; begin sForma:= StringReplace(sForma, 'act', 'Tfrm', []); Result:= TFormClass(GetClass(sForma)).Create(Self) end; Código:
initialization RegisterClass(TfrmNombreForma) |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Publicar parte de un objeto de clase | jlrbotella | OOP | 7 | 19-07-2017 10:18:54 |
Cargar/Guardar un objeto de una clase propia | Uoha | OOP | 7 | 14-05-2007 23:44:01 |
Clase, objeto, tipo? | [Gunman] | OOP | 3 | 04-01-2006 17:11:32 |
nombre de objeto tipo cadena | Carlos Arevalo | Varios | 2 | 17-12-2005 19:31:48 |
nombre de variables de una clase | Mariana | OOP | 8 | 25-10-2005 18:48:34 |
|