FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
¿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..... |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
¿¿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? |
#4
|
||||
|
||||
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;
__________________
Guía de Estilo de los Foros Cita:
|
#5
|
||||
|
||||
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 |
#6
|
|||
|
|||
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 |
|
|
|