Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Mejor evento para mostrar un segundo formulario (https://www.clubdelphi.com/foros/showthread.php?t=55393)

franfl 15-04-2008 21:55:17

Mejor evento para mostrar un segundo formulario
 
Hola
Tengo una dudilla, tengo un formulario principal desde donde accedo a una pantalla donde muestro consultas de los clientes. Entonces tengo programado que el 1 de cada mes la primera vez que abro la principal me vaya directamente a las consultas. Lo programe en el formshow pero no vale pq solo lo quiero ejecutar la primera vez que se muestra la principal, y ademas en formshow no llega a mostrar la principal.
Sabeis de algun evento del formulario que pueda cumplir esto?

dec 15-04-2008 21:57:59

Hola,

Tal vez el evento "OnCreate". O el mismo "OnShow", sólo que contando con una variable que haga de "bandera", de modo que sólo lo muestres una vez, al inicio de la aplicación.

roman 15-04-2008 22:19:08

Cita:

Empezado por franfl (Mensaje 280297)
Lo programe en el formshow pero no vale pq solo lo quiero ejecutar la primera vez que se muestra la principal

Bueno, pero normalmente el formulario principal sólo se muestra una vez. Ahora, en cuanto a

Cita:

Empezado por franfl
ademas en formshow no llega a mostrar la principal

supongo que te refieres a que el segundo formulario lo muestras modalmente y hasta que no lo cierras no aparece el principal. Eso lo puedes solventar con lo que expongo aquí.

Y bueno, si realmente tu formulario principal se muestra más de una vez- que, como digo, no es lo usual, a no ser que expícitamente lo escondas -entonces, tal como dice dec, puedes usar una bandera.

// Saludos

franfl 15-04-2008 22:25:24

Mi principal lo muestro muchas veces, pq es lo q me une todos los subsistemas, estoy haciendo un programa muy grande entonces paso por el muchisimas veces. En el create me casca asi que probare hacerlo con una variable. Supongo que con declararlo en la parte private, y ir sumando en formshow valdra, pero donde lo inicializo?
Me dijo un amigo q pruebe en el modulo de carga onload o algo asi, pero ahora mismo estoy desesperado.
Gracias
Un saludo

escafandra 15-04-2008 22:47:25

Me imagino que tu programa se cierra todos los dias...

La solución puede ser, tener una bandera como miembro de la clase y que inicializas el el constructor del Form principal. La lees en el OnShow y si es el primer dia del mes pues muestras las consultas...

La bandera también la puedes declarar en el mismo evento OnShow como static, de esa forma sólo se declara e inicializa la primera vez y su valor no está en la pila sino que se mantiene entre llamadas.

Código:

OnFormShow(...){
  static bool bandera = true;

  if(PrimerDiaMes && bandera){
    Consultas(...);
    bandera=false;
  }
}

Claro que si tu programa, es decir el formulario principal no se cierra nunca, al cambiar del último día del mes al primero, entonces deberás detectar la situación para evitar el error de que no te muestre las consultas (la bandera esta en false).

Saludos.

franfl 16-04-2008 20:33:44

Muchas gracias tio
lo de static funciona perfectamente y me va servir para muchas cosas, ya no me acordaba de static.
Un saludo


La franja horaria es GMT +2. Ahora son las 08:29:16.

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