Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-10-2007
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
Cerrar ventana Showmodal

Hola Foro, de nuevo tengo un problema y recurro a vosotros.

El problema que tengo es que necesito cerrar una ventana que he abierto con ShowModal, pero necesito cerrarla sin la intervención del usuario.

He mirado por el foro, y a pesar de que hay mucho sobre eso he probado un montón de soluciones que he encontrado y no me ha valido ninguna, entre ellas:

- Provocar el click al boton de Salir, pero se rie de mi. Ej:
Código Delphi [-]
BitBtn2Click(nil);

o

Código Delphi [-]
BitBtn2.Click;

- Tambien he probado con FormDeactivate y me da un error de violacion de memoria.

- Este error de violacion de memoria me lo da cuando intento cerrar la ventana por cualquier medio que no sea pinchando en el boton de salir que tiene asocioado del siguiente codigo:

Código Delphi [-]
QDatos.Close;
Close;

La verdad estoy desesperado, probablemente sea una tonteria pero no doy con ella, muy agradecido por vuestra ayuda por anticipado.
Responder Con Cita
  #2  
Antiguo 04-10-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Pues no termino de entender tu pregunta.

Por qué no lo cierras por código poniendo directamente
Código Delphi [-]
QDatos.Close;
Close;
donde quieras cerrar esa ventana.

Te debe de funcionar igualmente que si pulsas el boton al que te refieres.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 04-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Asigna un valor a ModalResult:
Código Delphi [-]
  Ventana.ModalResult := mrOK;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 05-10-2007
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
Gracias por contestar tan rapido, intentaré ampliar la información que puse en un principio.

Se trata de que la ventana showmodal en para introducir datos. En el evento OnActivate de la misma compruebo si se cumple una condición para poder seguir introduciendo esos datos. Si la condición es verdadera pues tengo que cerrar la susodicha despues de mostrar un mensaje informativo. He probado a cerrarla desde ese evento y me da error de acceso de memoria, tambien lo he intentado desde OnShow, igual; tambien lo he intentado desde el evento OnEnter del primer edit de la ventana, tambien el mismo error, todo esto con las soluciones que puse en un principio y con la solucion de Lepe.
Con la solucion de gluglu no me hace ni p... caso, solo funciona en el evento OnClick del boton de salir.

He probado también hacer esa comprobacion antes de crear la ventana, y si se cumple la solucion no la abro desde el menu principal, pero he observado una cosa muy rara y tras muchos intentos desisti de esa opcion que me parecia la mejor. La cosa rara es que para comprobar esa condicion lo que tengo que hacer es ver si existe un determinado articulo en una determinada tabla. Coloco la tabla en la ventana principal y ejecuto un locate, y sorpresa es como si el locate funcionara cuando quiere es decir erroneamente, pero ojo siempre funciona de la misma forma erronea, es decir, si dice que no existe un articulo (y sí existe), siempre dice lo mismo.

Espero que se entienda bien el mensaje y siento que sea tan largo, pero de verdad he probado todo lo que se ma ha ocurrido y nada.

Muchas gracias por atenderme.
Responder Con Cita
  #5  
Antiguo 05-10-2007
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,

No parece que tengas que mostrar un formulario para comprobar acto seguido si no puede mostrarse o no... ¿No te parece más lógico (oh, cómo me gusta esta palabra), digo, comprobar "la condición" y mostrar o no el formulario dependiendo de esta? Yo creo que sería menos problemático, ¿no? Y más lógico...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 05-10-2007
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
Hola Dec,

Efectivamente llevas razón, y eso fue lo que intenté primero, pero si miras mi anterior mensaje explico que al hacerlo, sin saber por qué, el locate hacía cosas raras y opté por hacer la comprobación después, ya que así no tengo problemas con el locate.

Incluso miré a ver si el problema estaba en el BDE del servidor de archivos donde tengo ubicadas las tablas, pero creo que ahí no estaba el problema. Ah, se me olvidaba son Paradox, ya sé que tienen problemas en red pero tengo bastante prisa. Una cosa, aunque las tablas están en otro ordenador, el programa está funcionando de momento en monousuario.

Gracias.
Responder Con Cita
  #7  
Antiguo 05-10-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Ya se ha comentado varias veces en el foro que en los eventos OnCreate, OnActivate, OnShow ... no se puede cerrar una ventana que se está creando en ese momento.

Busca en el Foro acerca de AfterShow.

Puedes consultar también aqui, aqui y aqui.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #8  
Antiguo 08-10-2007
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
He mirado los links que pone gluglu, pero realmente no me solucionan el problema.

Me aguantaré como lo tengo, que es desactivando el botón de grabar de la ficha para que el usuario cierre la ventana manualmente.

Muchas gracias a todos por haberos molestado en ayudarme.

Ciertamente con este foro no te sientes solo.
Responder Con Cita
  #9  
Antiguo 08-10-2007
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Una idea de parche :

Crea una variable global al form en cuestión que se llame Cerrar y sea boolean.
Si la condición que chequeas debe cerrar el form, la pones a True.
En el AfterShow, si Cerrar=True le dices que cierre el form. (close / ModalResul:=mrOk)
Responder Con Cita
  #10  
Antiguo 08-10-2007
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
Gracias duilioisola, pero no encuentro el evento AfterShow por ningún sitio.

Que
Responder Con Cita
  #11  
Antiguo 08-10-2007
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
Gracias duilioisola, pero no encuentro el evento AfterShow por ningún sitio.

Que yo sepa sólo existe el OnShow.
Responder Con Cita
  #12  
Antiguo 08-10-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
El AfterShow no es un evento del Form, ni de ningún otro control.

Es un método que se explica en los hilos que te mencioné anteriormente. Es una manera de ejecutar algo después de que el Form haya creado todos los controles, se haya activado, y se muestra en pantalla.

Se le ha puesto ese nombre como se le podía haber puesto cualquier otro (p.ej. 'DespuesDeMostrar').

Si lo crees oportuno, vuelve a revisar los hilos que expuse más arriba y creo sinceramente que te debería de servir.

Si tienes alguna duda adicional, puedes volver a preguntar sin problema.
__________________
Piensa siempre en positivo !
Responder Con Cita
  #13  
Antiguo 08-10-2007
Avatar de Espartaco
[Espartaco] Espartaco is offline
Miembro Premium
 
Registrado: oct 2005
Posts: 107
Poder: 19
Espartaco Va por buen camino
Gracias gluglu, volveré a mirar los links e intentaré implantar lo que me dices, lo que pasa es que hoy ya no puedo hacerlo, en cuanto lo intente os cuento.

Gracias de nuevo.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cerrar ventana rex HTML, Javascript y otros 2 29-05-2006 12:16:42
Problemas MDI cerrar ventana rafadrover Varios 3 28-01-2006 13:30:44
Confirmación de cerrar ventana. gontxalo OOP 13 26-05-2005 10:33:34
Cerrar Ventana ronson OOP 2 17-12-2004 12:38:04
ShowModal no permite cerrar ventana inetplus Varios 3 17-03-2004 20:56:01


La franja horaria es GMT +2. Ahora son las 00:55:03.


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