FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Ayuda Con App Mdi
Hola alguien me podria ayudar.
Tengo una APP MDI y quisiera saber como hago para que un formulario no se me abra dos veces o mas es decir, que si ya el form ya esta abierto que lo active, en vez de crearme otra instancia de ese form.
__________________
Optimus Prime |
#2
|
||||
|
||||
Tienes que pensar que un formulario es un objeto como cualquier otro, ¿Cómo harías para que un objeto no cree mas de una vez?
La primer solución básica es usando banderas, simplemente teniendo una bandera para saber si creamos un objeto o no, pero si este objeto se lo asignamos a una variable... ¿Para que vamos a tener otra?, por eso podríamos extender este concepto, y podríamos preguntar si la variable donde vamos a cargar este formulario esta asignada o no, y en este caso tenemos que tener la precaución que al liberarse limpiar el contenido de la variable.
Ahora, muchos programadores no utilizamos la variable global que nos crea automáticamente el IDE al crear un TForm, simplemente porque podríamos tener mas de una instancia del formulario (que este no es el caso), o porque no vamos a darle utilidad porque nunca haremos referencia al formulario desde fuera de la implementación de la clase, o simplemente por cuestión de gustos. En este caso podríamos implementar otras soluciones, de las cuales te voy a comentar dos, la primera es desactivar el control que usa el usuario para crear el formulario, simplemente:
Otra opción, puede ser, buscar si nuestro formulario ha sido creado previamente en la colección de formularios del objeto Screen:
¿Has visto algo nuevo?… ¿no es simplemente el mismo trato que se le da a cualquier objeto? Saludos!, espero que te sea de utilidad
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
||||
|
||||
gracias
Hombre muchas gracias, estaba bastante enredado con es acuestion, anotate un punto.
__________________
Optimus Prime |
|
|
|