Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como saber si un form existe (https://www.clubdelphi.com/foros/showthread.php?t=59072)

Mary Carmen G. 12-08-2008 14:12:48

Como saber si un form existe
 
Hola:
Tengo una aplicacion con un form principal (se crea al principo) y otros forms que son creados en tiempo de ejecucion, cada uno de estos forms se liberan con Release en su metodo OnClose(), y el Form_principal hace lo mismo, lo que necesito implementar es que en el OnClose del form_principal se recorran todos los forms y saber cual aun existe para mandar llamar a su metodo Close de cada uno.

Espero me puedan ayudar. Gracias

Caro 12-08-2008 14:26:26

Hola Mary Carme, puedes recorrer los formularios con screen.

Código Delphi [-]
 for i:=0 to screen.FormCount-1 do
   showmessage(screen.Forms[i].name);

Saluditos

Caro 12-08-2008 14:34:20

Hola de nuevo, con lo anterior te va mostrando todos los formularios que tienes creados en tu aplicación, si quieres buscar un formulario puedes utilizar FindComponent.

Código Delphi [-]
var
  formulario :TComponent;
begin
  formulario := Application.FindComponent('NombreFormulario');

  if Assigned(formulario) then
    showmessage('El formulario esta creado');

Saluditos

Mary Carmen G. 12-08-2008 14:38:46

Como saber si un form existe
 
Si, de hecho con eso he hecho pruebas, en especial solo es por un form (Form_captura_conteos) ya que al cerrarse tiene que cambiar unos valores en la Base de Datos, pero resulta que si funciona pero aveces el arreglo Screen.Forms[i] no se actualiza rapidamente y resulta que ya ni existe Form_Captura_conteos (Por que ya lo cerre) y aun asi lo intenta eliminar por lo tanto me sale un error Acces Violation.

Código:

             
Código Delphi [-]
for i := 0 to (Screen.FormCount - 1) do 
  {Buscamos si aun existe el form de captura}   
    if  Screen.Forms[i].Name = 'Form_captura_conteos' then begin           
        Form_captura_conteos.Close;       
        break;   
    end;


Caro 12-08-2008 14:55:15

Cita:

Empezado por Mary Carmen G. (Mensaje 307074)
Si, de hecho con eso he hecho pruebas, en especial solo es por un form (Form_captura_conteos) ya que al cerrarse tiene que cambiar unos valores en la Base de Datos, pero resulta que si funciona pero aveces el arreglo Screen.Forms[i] no se actualiza rapidamente y resulta que ya ni existe Form_Captura_conteos (Por que ya lo cerre) y aun asi lo intenta eliminar por lo tanto me sale un error Acces Violation.

Que raro, a mi, no me ha dado problemas recorrer los fomularios con screen, siempre se me ha actualizado la lista de todos los formularios que estan creados en ese momento. Si es solo un formulario entonces utiliza FindComponent, ¿has hecho la prueba con lo segundo que te pase?.

Saluditos

Mary Carmen G. 12-08-2008 15:05:31

Como saber si un form existe
 
Hola de nuevo ya probe y con FindComponent no me sale el error, seguire haciendo mas pruebas ya que no siempre me salia el mensaje de error.

Muchas Gracias por la ayuda!!!


La franja horaria es GMT +2. Ahora son las 03:53:10.

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