PDA

Ver la Versión Completa : Conocer Formulario Activo


wolfang
06-03-2007, 06:29:02
Mu wenas:

Es mi primera incursión en el foro, así que pido disculpas anticipadas si cometo algún fallo en la descripción del problema. Una vez avisado de ésto al grano:

Estoy realizando un proyecto a nivel personal (metiéndome en camisas de 270^2345 varas) y me he encontrado con una pequeña dificultad.

Resulta que tengo un formulario que puede ser llamado desde dos formularios diferentes, y al mostrarle oculto el precedente.

El problema es que al acabar de operar con el formulario y destruirle, el previo está oculto y obviamente, da la impresión de haberse colgado la aplicación.

A medida que lo estoy escribiendo me estoy perdiendo hasta yo. Intentaré resumioslo por medio de código

Formulario A:



begin
Application.CreateForm(TfrmformC,frmformC);
frmformC.Show;
frmformA.Visible:=False;
end;



Formulario B:


begin
Application.CreateForm(TfrmformC,frmformC);
frmformC.Show;
frmformB.Visible:=False;
end;


Formulario C:


TfrmformC.Button1Click(Sender: TObject);
begin
frmformC.Destroy;
end;


Espero que así esté más claro. La cuestión es: Como muestro el Formulario que se ha convertido en activo.

Está claro que tengo la opción B: No ocultar el formulario, pero me parece, y es una opinión personal, poco elegante.

Bueno, hasta aquí el capítulo 1 de la nueva telenovela... No en serio, disculpad la murga, paliza, chapa, etc. que os he dado, y gracias por aguantar hasta aquí

roman
06-03-2007, 07:02:59
Yo no veo por qué ha de ser poco elegante no ocultar el formulario, pero lo hagas o no, pienso que te estás liando de más y te evitarías problemas si mostrases el formulario con ShowModal:


Application.CreateForm(TfrmformC,frmformC);
Self.Hide;
frmformC.ShowModal;
frmformC.Free;
Self.Show;


Por otra parte, no es lo común destruir un formulario desde un botón de él mismo- y si lo haces, se recomienda usar Release en lugar de Free (Destroy nunca) -sino desde fuera (como escribí arriba) o en su evento OnClose poniendo el parámetro Action igual a caFree.

// Saludos