![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Una Prueba
Hola, has probado con CloseWindow(handle de la ventana que quieres cerrar).
Chau Saludos. |
|
#2
|
||||
|
||||
|
¿Puedes poner algo de código? El que utilizas para mostrar las ventanas. Eso tal vez ayudaría.
__________________
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. |
|
#3
|
||||
|
||||
|
hola gracias por la ayuda
, el CloseWindow nunca lo he usado pero hice la prueba segun con lo que entendi, pero sigo teniendo el mismo error:Código:
Project NRC.exe raised exception class EInvalidOperation with message 'Cannot make a visible window modal1. Process stopped. use Step or Run to continue Código:
unit UMenu; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ... ... procedure TFMenu.pendientes(Sender: TObject); begin MTabla.QComodin.Close; if ((varcon = 'S')OR(varresp = 'S') OR (varver = 'S') OR (varimp = 'S')) THEN begin FMensaje11.ShowModal; end end; procedure TFMenu.RelojTimer(Sender: TObject); begin //****************************************** //***mandara mensaje de si hay pendientes cada 20 segundos //******************************************* Mtabla.Session.Close; pendientes(Sender); end; procedure TFMenu.reloj2Timer(Sender: TObject); begin //****************************************** //***cerrara sesion en determinado momento cada 40 segundos //******************************************* Mtabla.Session.Close; if (reloj.Enabled = false) then //aqui confirmo que este desplegada //en pantalla la forma FMensaje11 FMensaje11.close; //aqui indico que quiero se cierre la forma //closeWindow(FMensaje11.Handle); // tambien lo intente con esta //instrucción y nada FSeguridad.ShowModal; // aqui mando a llamar otra y cuando cierro esta //se hace un llamado al proceso Pendientes end; Código:
FMensaje11.FormClose() ![]()
__________________
----------------->> Saluditos <<-----------------
|
|
#4
|
|||
|
|||
|
Otra Prueba
Aura, colocando la propiedad ModalResult en un valor distinto de cero. Es decir, cambiar el Fmensaje1.close; por FMensaje1.ModalResult=1;
Prueba con esto haber si te funciona. Saludos. |
|
#5
|
||||
|
||||
|
sigo probando
pues nada, puse el modalresult = 1; en lugar de FMensaje11.close puse FMensaje11.modalresult := 1 y me sigue marcando el mismo error.... mil gracias por el tiempo que toman en ayudarme.
__________________
----------------->> Saluditos <<-----------------
|
|
#6
|
||||
|
||||
|
Este código es demasiado enredado y obscuro como para poder confiar en él aun en el supuesto de que logres resolver este problema específico.
Es de suponerse que el error te lo marca por intentar abrir una ventana modal que nunca se cerró. En reloj2Timer comentas que confirmas que FMensaje1 está abierta e intentas cerrarla. Pero no se ve claro en absoluto que la condición que usas (reloj.Enabled = false) realmente determine si la ventana está abierta. ¿Has intentado poner un punto de corte en la línea que cierra la ventana para saber si efectivamente el flujo del código llega a ese punto? Quizá si nos explicas- esta vez sin código ni tecnicismos, pero claramente -cuál es la idea que persigues, podamos sugerirte alguna forma de desarrollar tu idea. Visto así nada más, tratado de abstraer lo que quieres, parece que deseas desplegar una ventana modal cada x tiempo y el problema surge cuando dicha ventana ya está abierta. Entonces necesitas una manera fiable de determinar si está o no abierta. Para ello podrías usa una bandera (alguna variable booleana) que pones a true al momento de mostrar la ventana y a false al momento de cerrarla. En el timer usarías esta bandera para ver si tienes que cerrar la ventana. Pero como te digo, será mejor que tú misma nos aclares cuál es el objetivo. // Saludos |
|
#7
|
||||
|
||||
|
hola muchas gracias por la ayuda y el tiempo que me han dedicado. Aviso que al parecer he encontrado la solución, reemplace la instrucción FMensaje11.ShowModal por FMensaje11.Show con esto ha dejado de marcarme el error, seguire haciendo pruebas.
Aun asi tratare de explicar que es lo que quiero conseguir: Tengo una ventana de logueo (Ventana A) la cual confirma el login y contraseña de los usuarios, al permitir el acceso al sistema despliega la pantalla del menú (Ventana B) y revisa que ese usuario no tenga pendientes por revisar, de tenerlos despliega un aviso (Ventana C). La ventana C se manda a llamar por medio de un timer(reloj) cada X tiempo desde la ventana B, la cual siempre esta desplegada, y si no esta abierta ninguna otra ventana del sistema, esto para estar refrescando los pendientes que tiene el usuario. La ventana A es desplegada con otro timer(reloj2) cada X2 tiempo tambien desde la ventana B, es decir, si el usuario tiene abierto el sistema pero lleva mucho tiempo sin realizar ninguna tarea en él deberá loguearse nuevamente por el tipo de información que utiliza. Ahora como estaba se desplegaba la Ventana C y si el usuario la cerraba inmediatamente todo el proceso seguía norma, se podía ver la Ventana C y la Ventana A cerrando cada una en el momento en que se desplegaban. Pero si se desplegaba la Ventana C y no la cerraba el usuario, al momento de desplegarse la Ventana A por codigo se mandaba cerrar la Ventana C, aqui el problema la siguiente vez que se llamaba la Ventana C marcaba el error. Espero haber sido clara con lo que quiero lograr y que el cambio realmente me funcione. Muchas muchas gracias por el tiempo y la ayuda gracias gracias gracias
__________________
----------------->> Saluditos <<-----------------
Última edición por Aura fecha: 13-05-2005 a las 18:59:55. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|