Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Detectar si un modulo esta creado (https://www.clubdelphi.com/foros/showthread.php?t=94562)

miguelb 03-04-2020 17:35:13

Detectar si un modulo esta creado
 
Buenos dias,
Tengo los siguientes forms dentro de un proyecto de delphi:
tasa_oper (5)
tasa_impresion (4)
resumen (3)
operacion (2)
generacion (1)
Dichos modulos se ejecutan entre ellos segun las opciones que el usuario vaya seleccionando.
1 - 3
1 - 4
1 - 5
3 - 2
3 - 4
3 - 5
2 - 4
Es decir que se podria dar la ejecucion de
1 - 3 - 2 - 4 - 5
4 - 5
3 - 5
3 - 2 - 4 - 5
5
El problema que se me esta dando es que cuando llamo al ultimo modulo (el 5), si no esta creado, me da error.
La consulta es si existe alguna manera de detectar si un modulo ya esta creado o no en tiempo de ejecucion. (Si no esta creado lo creo, y continuo).
Utilizo delphi 7.0
No se si mi explicacion es muy clara.
Gracias desde ya
Saludos

aledieb 03-04-2020 19:31:58

Probaste con
Código:

If not Assigned(NombreFormulario) then
  NombreFormulario:=TForm1.Create(nil);


ecfisa 03-04-2020 23:16:16

Hola.

Solo agregar que si el formulario ha sido liberado con el procedimiento Free la función Assigned nos indicará que el objeto (form) está creado y arrojará una excepción cuando intenten usarlo.
Ejemplo:
Código Delphi [-]
uses Unit2;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form2 := TForm2.Create(Self); 
  // ...
  Form2.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Assigned(Form2) then
    Form2.Show;
end;

La solución es poner la variable del formulario a nulo ya sea asignándolo directamente, o usando el procedimiento FreeAndNil.
v.gr.:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form2 := TForm2.Create(Self);
  // ...
  Form2.Free;
  Form2 := nil;
 // O  de otro modo y en una sola línea:
 // FreeAndNil(Form2);
end;

Saludos :)


La franja horaria es GMT +2. Ahora son las 15:38:15.

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