FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Crear un Form desde un componente
Amigos: disculpen por preguntar algo tan básico, pero si alguien puede ayudarme le agradecería mucho.
Estoy haciendo un componente que guarda la estructura de propiedades de una persona TPersona; no es un componente visual y necesito implementarle un método que cuando yo lo corra como Persona.GetData;, el componente despliegue un form creado dinámicamente sobre la base de las propiedades del mismo componente, permitiendome enviar los datos a un servidor SQL, o grabarlos en disco como XML. Implementé el siguiente método: function TPersona.GetData: boolean; var Ventana: TForm; begin Ventana:=TForm.Create(Self); Ventana.ShowModal; Result:=True; end; y logro que el componente presente una ventana en blanco. El problema surge cuando hago esta declaración: type TVentana = class(TForm) Edit1: TEdit; Button1: TButton; private { Private declarations } public { Public declarations } end; y pretendo que el componente la muestre con el siguiente método: function TPersona.GetData: boolean; var Ventana: TVentana; begin Ventana:=TVentana.Create(Self); Ventana.ShowModal; Result:=True; end; Pero se produce una excepción que me dice que nos posible encontrar el archivo de recursos (probablemente el .DFM). Cómo puedo solucionar esto? Muchas Gracias. |
#2
|
||||
|
||||
El DFM de la unit que contiene a TVentana, debe estar en el Search Path del paquete donde estas compilando tu componente.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
Gracias por tu ayuda; tu consejo funcionó a la perfección, no obstante encontré una solución alternativa:
function TPersona.GetData: boolean; var Ventana: TForm; edt_Name: TEdit; btn_OK: TButton; begin Ventana:=TForm.Create(Self); edt_Name:=TEdit.Create(nil); edt_Name.Parent:=Ventana; btn_OK:=TButton.Create(nil); with btn_OK do begin Left := 56; Top := 16; Width := 75; Height := 25; Caption := 'Pulse Aqui'; TabOrder := 0; Parent :=Ventana; end; Ventana.ShowModal; Execute:=True; end; Otra vez: Muchas Gracias! |
|
|
|