![]() |
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. |
El DFM de la unit que contiene a TVentana, debe estar en el Search Path del paquete donde estas compilando tu componente.
Saludos! |
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! |
La franja horaria es GMT +2. Ahora son las 04:47:35. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi