![]() |
metodos para hacer que una forma solo se ejecute una vez
¿cual es el metodo mejor para hacer que una forma solo se ejecute una vez?
no me refiero a la aplicación, sino a las ventanas dentro de esta por ejemplo en delphi se usan muchas ventanas pero ninguna se repite yo lo logro pero con metodos muy laboriosos ¿hay alguna manera facil de lograr eso? |
Cita:
Saludos |
Cita:
(1) Utilizar un TStringList. (2) Al crear el form añades un nuevo String, con el nombre de la clase por ejemplo y el objeto (el Form) a la lista. (3) Al cerrar el form lo eliminas de la lista. (4) Cuando vas a crear uno nuevo, primero revisas si está en la lista, si no está haces lo del paso(2), si ya está puedes sacar un mensaje, activar el form que ya hay creado,... Como ya te digo es algo que se me acaba de ocurrir, pero sea éste u otro similar no parece muy complicado; Tal vez no he entendido bien el problema; Si es así ¿Puedes dar más datos?. |
Cita:
Saludos |
Cita:
Mi método favorito es éste: 1. Quita todos los formularios secundarios de la opción AutoCreate 2. En el evento OnClose de tus formularios secundarios pon Action := caFree; 3. En el formulario principal redefine el método Notification:
4. Cuando quieras mostrar un formulario secundario haces esto:
La cosa cambia si abres formularios desde otro lugar que no sea el formulario principal pero esta es la idea. // Saludos |
me parece muy interesante tu manera de hacer que solo se ejecute una vez cada forma
no puse la manera en que yo lo hago para ver si se podia de una forma diferente y asi lo fue esta es la forma en que yo lo logro: primero declaro esta función
y la uso asi
con esto logro no solo que no se cre una nueva, tambien consigo que se muestre la que ya esta creada ¿tiene alguna falla? gracias por su atención saludos |
en lo que mande antes hay una falta
al igual que en metodo de roman se debe 1. Quitar todos los formularios secundarios de la opción AutoCreate 2. En el evento OnClose de tus formularios secundarios poner Action := caFree; disculpen esta falta saludos |
Pues yo no veo que debas seguir ninguno de esos dos pasos para conseguir lo que quieres, el método DesplegarForma, visto así por encima, parece que hace lo que debe, y, se hayan autocreado los formularios o no, debe funcionar igual.
Ten en cuanta que en el ejemplo de Roman, se chequea una variable (Form2 del tipo TForm2 en el ejemplo), de ahí la necesidad de saber si está a nil o no, y de que interese destruirla al cerrarse (con caFree) y avisar al Form principal para que la ponga a nil cuando ello suceda. Pero en tu caso, puesto que no chequeas una variable concreta sino un tipo de formulario, eso no es necesario. Saludos PD: el código que pones lo puedes encerrar entre una etiqueta [ delphi ] para que se vea más claro ;) |
La franja horaria es GMT +2. Ahora son las 04:27:45. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi