PDA

Ver la Versión Completa : Crear un Form desde un componente


nemo
16-07-2003, 00:32:05
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.

delphi.com.ar
16-07-2003, 00:48:02
El DFM de la unit que contiene a TVentana, debe estar en el Search Path del paquete donde estas compilando tu componente.

Saludos!

nemo
16-07-2003, 05:51:02
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!