Evitar que un form se abra estando abierto
pues como el titulo lo dice, si en mi aplicacion el usuario tiene un form abierto o creado e intenta abrir el mismo form como hago para evitar que se abra avisandole a traves de un showmessage?
Saludos. |
Hola,
Para saber si está creado... precisas comprobar la variable en que se guarda la instancia del objeto para ver si es "nil" o está asignada. Para ver si está visible... creo recordar que hay un método "Showing()" *, o si no tal vez te apañe la propia propiedad "Visible" de los formularios. * Es una propiedad en realidad. |
Gracias dec, hice esto:
y me tira un error, un classexception. Saludos, |
Hola,
Se me hace raro que compruebes en el "OnCreate" del formulario si este está visible... porque esté como esté por el "OnCreate" no pasará sino una vez... cuando se cree el formulario. Pero lo mismo estoy desvariando. Lo que es seguro es que acaso antes de comprobar si el formulario está visible (con "ShowWing") deberías comprobar si realmente la variable "FPedido", en este caso, está asignada, no es "nil". Porque si el formulario no está creado es evidente que no estará visible, y más aún, no puede accederse a las propiedades de un objeto que no ha sido creado. |
Una pregunta: ¿Hay alguna propiedad que nos permita diferenciar los formularios? El nombre, la clase, etc ...
Si es así puedes usar un bucle como este: Y cuando crees o llames al formulario, podrías comprobar si existe. Yo no lo haría dentro del create del formulario.
|
Disculpa dec, lo puse en el boton donde se abre el form y aun asi me sale el mismo error, para serte sincero no entendi mucho lo que me quisiste decir, perdon:o.
Saludos. |
Gracias seoane dejame aplicarlo a ver si me funciona, luego te comento.
|
Gracias seoane!! me ha funcionado de maravillasel codigo me quedo asi:
Muchas Gracias, Saludos. |
Hola,
Cita:
PD. La idea de Seoane me parece estupenda, como no podía ser de otro modo. :) |
Otra opción puede ser utilizar la propia variable del formulario.
Al cerrar el formulario hay que asegurar se de colocar la variable a nil. |
... y por qué siquiera avisar de que lo tiene abierto ? Se muestra y ya está.
... y en el caso de MDI o si se permite minizar el Form :
Y edito y añado : Como decía Neftalí, tienes que recordar poner la variable a nil en el OnClose de FPedido : ... o utilizar FreeAndNil. |
Muchas Gracias Neftali y Gluglu tambien me han servido sus sugerencias, muchas gracias...
|
La franja horaria es GMT +2. Ahora son las 09:33:18. |
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