Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-02-2004
nesetru nesetru is offline
Miembro
 
Registrado: may 2003
Posts: 50
Poder: 21
nesetru Va por buen camino
Talking ¿Cómo saber si un Form está creado?

Hola Amigos.

La cuestión es la siguiente:

Desde un procedimiento creo un formulario para la visualización de unos datos. Desde otro procedimiento tengo que ver si ese form ya está creado o no. Si está ya creado hago una cosa y si no está creado hago otra.

El Form en cuestión lo creo y lo muestro así:

Application.CreateForm(TfmForm, FmForm);
Form.Show

Lo que quiero hacer sería:

If Form.esCreado then
Hacemos_Algo1
else
Hacemos_Algo2;

Muchas gracias.....
Responder Con Cita
  #2  
Antiguo 08-02-2004
Gabriel Gabriel is offline
Miembro
 
Registrado: may 2003
Ubicación: PalauTordera
Posts: 115
Poder: 21
Gabriel Va por buen camino
if not Assigned(FClients) then
FClients := TFClients.Create(Application);

// Aqui ja nos aseguramos que esta creado, si no la hemos creado antes
FClients.Show;



// En Formulario Clientes

procedure TFClients.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FClients.Free;
FClients := nil;
end;
__________________
Gabriel
Responder Con Cita
  #3  
Antiguo 08-02-2004
nesetru nesetru is offline
Miembro
 
Registrado: may 2003
Posts: 50
Poder: 21
nesetru Va por buen camino
Talking ¿¿Existe un Form??

Gracias por contestar pero he de decirte que no lo entiendo.

Tan solo busco una propiedad o método de TForm que me indique si está creado o no.

Si esto no fuera posible, pues necesito lo mismo pero que me indique si a un TForm se le ha hecho un Show.

Imaginad que he creado un Form llamado FmReproductor, ahora desde un procedimiento tengo que comprobar si FmReproductor existe, ¿Cómo se haría?
Responder Con Cita
  #4  
Antiguo 09-02-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Prueba con este código:
Código:
 procedure TForm1.Button1Click(Sender: TObject);
 var
   I: Integer;
 begin
   for I := 0 to Screen.CustomFormCount-1 do
 	if Screen.CustomForms[i].Name ='Form2' then
 	ShowMessage('Está cargado');
 end;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 09-02-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Pues de la primera respuesta... con assigned(puntero) verificas si la variable apunta a una dirección de memoria distinta de nil, con lo que podes facilmente averiguar si un formulario (o cualquier otra instancia de una clase) está creada. Esto se basa, por supuesto, en la teoría que siempre que liberes un objeto, asignarás nil a cualquier variable que le apunte...

Esto es:

Form1.Free;
Form1 := nil;

Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 09-02-2004
Gabriel Gabriel is offline
Miembro
 
Registrado: may 2003
Ubicación: PalauTordera
Posts: 115
Poder: 21
Gabriel Va por buen camino
Exactamente

if not Assigned(FClients) then // El form no esta creado
Begin
// Asi lo crearia // FClients := TFClients.Create(Application);
// O hago lo que quiero
// Si quiero lo enseño // FClients.Show;
end
else
Begin
// Como esta creado si quiero lo enseño // FClients.Show;
// O hago lo que quiera
end;

Es mas directo ja que controla si la variable FClients que apunta al formulario no esta a nil

Lo unico que tienes que hacer cada vez que cierres el formulario y quieras
liberarlo poner la variable FClients a nil
// En Formulario Clientes

procedure TFClients.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FClients.Free;
FClients := nil;
end;
__________________
Gabriel
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:53:45.


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
Copyright 1996-2007 Club Delphi