Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-06-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Poder: 19
gontxalo Va por buen camino
Que salte una ventana a los 10 segundos

Hola.
En una aplicación vcl quiero que al ejecutarse, salte el form1, pero que el form2 salte encima del 1 y que el usuario no pueda manejar el form1 hasta que cierre el dos. Para ello he puesto el siguiente code:

procedure TForm1.FormActivate(Sender: TObject);
begin
Form2.ShowModal;
end;

Funciona.

Pero quiero que un Form3 salte a los 10 segundos de que el Form 1 esté abierto. Esto como lo puedo hacer?
Responder Con Cita
  #2  
Antiguo 06-06-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.281
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Añade al form1 un Timer con Interval=10000 y en el evento OnTimer pon lo siguiente:

Código Delphi [-]
   Form3.ShowModal;
   Timer1.Enabled := False;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 06-06-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Poder: 19
gontxalo Va por buen camino
Como pongo un timer al form1

Hola Neftali.
Como añado un timer con intervalo 10000 al form1 ?

Y en los eventos del form1, no encuentro ninguno que sea OnTimer para ponerle el code:
Form3.ShowModal;
Timer1.Enabled := False;
Lo siento pero soy nuevo.
Gracias.
Responder Con Cita
  #4  
Antiguo 06-06-2005
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Hola:

El timer es un componente que tienes tu que añadir, está en la pestaña System.
El intervalo es una propiedad del TTimer, la propiedad Interval, le pones ese valor y listo.

Un saludo.
Responder Con Cita
  #5  
Antiguo 06-06-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Poder: 19
gontxalo Va por buen camino
Gracias. Ya lo tengo.

Hola
Perfecto
Ya lo tengo
Funciona.
Te da una alegría cuando van funcionando las cosas...
Responder Con Cita
  #6  
Antiguo 06-06-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Poder: 19
gontxalo Va por buen camino
Así salta cada 10 segundos. Y para que sea una vez sólo?

Una cosa
Lo que me he fijado es que así salta esta ventana cada 10 segundos.
Pero si lo que quiero es que salte sólo una vez a los 10 segundos de que se ejecute la aplicación?
Como lo hago?
Responder Con Cita
  #7  
Antiguo 06-06-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Poder: 19
gontxalo Va por buen camino
Ya esta

Ni caso.
Se me olvidó poner debajo:
Timer1.Enabled := False;

ya funciona correctamente.
Gracias
Responder Con Cita
  #8  
Antiguo 06-06-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Poder: 19
gontxalo Va por buen camino
Con ShowModal da error

Hola
Lo pongo asi:
Form3.ShowModal;
Timer1.Enabled := False;
Y al run me da el error:
exception class EInvalid Operation with message 'Cannot make a visible window modal'

Y si en vez de ShowModal pongo Show, funciona pero lo que yo quiero es que la ventana que salga a los 10 segundos tengan que cerrarse antes de poder seguir haciendo algo en el form de abajo. Como lo puedo hacer?

Gracias.
Responder Con Cita
  #9  
Antiguo 07-06-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos

Chequea si en la propiedad FormStyle del Form3 estA en fsNormal, si no estA asi ponlo
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #10  
Antiguo 07-06-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Lo que ocurre es que se está tratando de mostrar de forma "modal" un formulario que está ya mostrándose, sea de forma "modal" o no. ¿No es eso?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #11  
Antiguo 07-06-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Poder: 19
gontxalo Va por buen camino
Si, está en fsNormal

Hola
Si está en formStyle: fsNormal, y no funciona.

Hola Dec.
No, no se está mostrando todavía el form3.

Lo que quiero es que cuando corre la aplicación salta el form1. A los 5 segundos salte el form2 y a los 10 salte el form3.

Para ello en el form1 pongo dos timer. El primero llamo al form 2 a los 5 segundos, y en el timer2 llamo al form3 a los 10 segundos.

El form2 quiero que los usuarios puedan manejar el form1 o form2 independientemente. Para ello lo pongo de forma Show:
Form2.Show;
Timer1.Enabled := False; funciona.

El form3 cuando salte quiero que los usuarios no puedan manejar el form1 hasta que cierren la ventana del form3, para ello lo pongo en ShowModal:
Form3.ShowModal;
Timer2.Enabled := False; no funciona, me salta el error:
exception class EInvalid Operation with message 'Cannot make a visible window modal'

Pero si lo pongo igual que el form2 si funciona, es decir los dos en show:
Form.3Show;
Timer2.Enabled := False;

Pero así cuando salta la ventana del form3, los usuarios pueden acceder al form1 sin cerrar la ventana del form3.

Gracias
Responder Con Cita
  #12  
Antiguo 07-06-2005
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Hola:

Dices que no se está mostrando el form3 pero el mensaje según mi no muy buen inglés parece que dice lo contrario: 'Cannot make a visible window modal' -> No puedo hacer modal una ventana visible

¿Como creas el form3?. Si lo tienes en Auto-create forms pásalo a Available Forms y créalo manualmente antes de mostrarlo en ShowModal, a ver si funciona.

Un saludo.
Responder Con Cita
  #13  
Antiguo 07-06-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Poder: 19
gontxalo Va por buen camino
Tengo todos los form en autocreate

Hola
Tengo todos los form en autocreate. Al cambiarlo a available me salta otro erros y tampoco puedo llamarlo desde el botón.
Cuando desde el form1 llamo al form3 con un boton en forma modal:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form3.ShowModal;
end;
Me funciona correctamente. Salta el form3 y hasta que no cierro el form3 no puedo actuar sobre el form1.

Hay alguna otra forma de poderlo hacer?

Es decir que al ejecutar la aplicación salte el Form1 y encima el form3 y que no se pueda actuar sobre el form1 hasta que se cierre el form3.

El form3 es de registro de usuarios. Nombre y password. Y hasta que no reconozca los datos nombre y usuario no se cierra el form3 y no se pueda actuar sobre el form1 ?

Gracias
Responder Con Cita
  #14  
Antiguo 07-06-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
1) El form1 ponlo en AutoCreate y los demas en Availables
2) Crear el form3:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form3:=tform3.create(self); 
  Form3.ShowModal;
end;
3) Todos los form en FormStyle:=fsNormal;
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #15  
Antiguo 08-06-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Poder: 19
gontxalo Va por buen camino
Ya esta hecho, hay un error en timer2

Hola
Ya he puesto todos los form menos el 1 en available.
He puesto el code para llamar a los otros forms desde botones y funciona.

Pero....

Lo que me sigue sin funcionar es el timer para llamar al form3. Si salta y si es en modal por lo que hasta que no se cierra no se puede manejar el form1. Pero me salta no una sino indefinidamente. Con Show salta una vez, con ShowModal salta indefinidamente, uno encima del otro.

Con el botón funciona:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form3 :=TForm3.Create(self);
Form3.ShowModal;
end;

Timer 1 con show funciona:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Form9 :=TForm9.Create (self);
Form9.Show;
Timer1.Enabled :=False;
end;

Timer 2 con showmodal salta el form3 una vez encima de si mismo indefinidamente:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Form3:=TForm3.Create (self);
Form3.ShowModal;
Timer2.Enabled :=False;
end;

Que puedo hacer para que el form3 salte sólo una vez?

Gracias
Responder Con Cita
  #16  
Antiguo 08-06-2005
fidel fidel is offline
Miembro
 
Registrado: mar 2005
Posts: 381
Poder: 20
fidel Va por buen camino
Hola:

Yo creo que vtdleon tiene razón, el form1 ponlo en AutoCreate y los demas en Availables, no se que otro tipo de error te puede dar con eso.

Lo que intentas hacer quizás se pueda con un solo form, en él pones un TPageControl con tres páginas (TTabSheet). Para empezar solo TabVisible a true a la primera página y las otras dos False para que no se puedan ver. Al dar al botón que dices se puede hacer visible también la solapa de la segunda con lo que puedes entrar en las dos cuando quieras, pero cuando des al botón para ir a la tercera te sitúas en ella y ocultas todas las solapas y así solo podrás estar en la tercera, cuando salgas de la tercera visualizas las solapas de la 1 y la 2.

Resumiendo, que vas mostrando u ocultado pestañas según te convenga dejar o no dejar entrar en la página.

Un saludo.
Responder Con Cita
  #17  
Antiguo 08-06-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Poder: 19
gontxalo Va por buen camino
El error es que salta el form3 con timer2 indefinidamente

Hola
Gracias por tu idea pero es que la aplicación al final tendrá 10 forms y me cuadra mas de la otra forma.

Lo único es que me salta indefinidamente el form3. No sólo una vez.

Gracias.
Responder Con Cita
  #18  
Antiguo 08-06-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos.

Creo saber por que te sale uno arriba de otro.
Cuando llamas a un formulario en forma MODAL, el proceso que llamo la forma se detiene hasta que cierres el formulario modal
Por Ej:
Código Delphi [-]
//Timer 1 con show funciona:
      procedure TForm1.Timer1Timer(Sender: TObject);
      begin
     Form9 :=TForm9.Create(self);
      Form9.Showmodal; //Se detiene aqui y no da paso a que se deshabilite el Timer, hasta que éste se cierre.
      Timer1.Enabled :=False;//Cuando cierre la forma modal, esta linea se ejecuta
      end;

Pon este codigo.
Código Delphi [-]
//Timer 1 con show funciona:
     procedure TForm1.Timer1Timer(Sender: TObject);
     begin
     Timer1.Enabled :=False;
     Form9 :=TForm9.Create(self);
     Form9.Showmodal;
     end;

Suerte
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!

Última edición por vtdeleon fecha: 08-06-2005 a las 02:31:17.
Responder Con Cita
  #19  
Antiguo 08-06-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Poder: 19
gontxalo Va por buen camino
perfecto-ya está funcionando

Ya está funcionando correctamente.
Saltan las dos ventanas una show y otre showmodal y una vez.

Perfecto ese era el fallo. No daba paso a cerrar el timer y la línea se ejecutaba todo el rato.

Solucionado
Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:13:23.


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
Copyright 1996-2007 Club Delphi