Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Conocer Formulario Activo (https://www.clubdelphi.com/foros/showthread.php?t=41034)

wolfang 06-03-2007 06:29:02

Conocer Formulario Activo
 
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:


Código:

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


Formulario B:

Código:

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

Formulario C:

Código:

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:

Código Delphi [-]
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


La franja horaria es GMT +2. Ahora son las 14:40:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi