Autor Tema: Detectar un click fuera de un formulario Modal  (Leído 7188 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Detectar un click fuera de un formulario Modal
« en: Enero 12, 2015, 11:02:41 am »
Hola hay alguna forma de detectar que el usuario esta haciendo click afuera de un formulario que esta por ejempo detras de otro que esta abierto como Modal ?

para darle un mensaje como este !!! Primero cerra el que esta en el frente Chavon!!Gracias
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Detectar un click fuera de un formulario Modal
« Respuesta #1 en: Enero 12, 2015, 01:50:40 pm »
Seria interesante saber eso... pero ¿y porque no abres el form así?:

MiFormulario.Show 1

(con el 1) De esa manera no pasara el foco a ningún otro formulario, digo, para ahorrar código.

Saludos
Me encuentras en YAcosta.com

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Detectar un click fuera de un formulario Modal
« Respuesta #2 en: Enero 12, 2015, 04:02:23 pm »
Seria interesante saber eso... pero ¿y porque no abres el form así?:

MiFormulario.Show 1

(con el 1) De esa manera no pasara el foco a ningún otro formulario, digo, para ahorrar código.

Saludos

Es que así lo abro Yvan ! Y aunque el usuario pinche fuera de ellos no pasa nada pero quisiera detectar ese click.
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Detectar un click fuera de un formulario Modal
« Respuesta #3 en: Enero 12, 2015, 06:40:42 pm »
¿?¿?

No entendi doc. ¿que es "no pasa nada"?

Cuando el usuario pincha fuera la ventana parpadea SALVO QUE le hayas quitado la propiedad border (o algo asi) al formulario, en ese caso igual funcionaria pero visualmente no avisaria. ¿es eso?
Me encuentras en YAcosta.com

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Detectar un click fuera de un formulario Modal
« Respuesta #4 en: Enero 12, 2015, 07:29:21 pm »
¿?¿?

No entendi doc. ¿que es "no pasa nada"?

Cuando el usuario pincha fuera la ventana parpadea SALVO QUE le hayas quitado la propiedad border (o algo asi) al formulario, en ese caso igual funcionaria pero visualmente no avisaria. ¿es eso?

GRAFIQUEMOS !!

Todo ocurre dentro de un form Maximizado y sin Barra de Titulos
Los botones de Arriba estan en un picture dentro del de este.
De alli en mas todos se abren como Modal (Show 1)
Donde comienza EL RECTANGULO AMARILLO ES UN FORM ABIERTO frmClienteContenedor.Show vbModal
Donde comienza el Rectangulo Verde es otro form que esta sobre el anterior FrmAgregarCliente.Show. VbModal

y como veras no tienen barras de titulo por lo que me gustaria simplemente que cuando el cliente pinche fuera del rectangulo verde !
poder capturar ese click!!

OJALA SE ENTIENDA !!!
« última modificación: Enero 12, 2015, 07:45:21 pm por Bazooka »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Detectar un click fuera de un formulario Modal
« Respuesta #5 en: Enero 12, 2015, 07:52:51 pm »
Correcto, es lo segundo. Te servira. ¿Te sirve esto?
http://www.foro.vb-mundo.com/f24/mousedown-fuera-del-form-15094/

P.D: ¿Ese formulario es tuyo? Si la respuesta es Si te felicito por el buen diseño tanto de las lineas como de los colores, te quedo bien piola. Si la respuesta es No... celebro tu buen gusto.  :-)
Me encuentras en YAcosta.com

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Detectar un click fuera de un formulario Modal
« Respuesta #6 en: Enero 12, 2015, 08:00:09 pm »
Correcto, es lo segundo. Te servira. ¿Te sirve esto?
http://www.foro.vb-mundo.com/f24/mousedown-fuera-del-form-15094/

P.D: ¿Ese formulario es tuyo? Si la respuesta es Si te felicito por el buen diseño tanto de las lineas como de los colores, te quedo bien piola. Si la respuesta es No... celebro tu buen gusto.  :-)

Siii es todo mio ! Gracias Yvan y es el Software que le vengo prometiendo hace 10 años a mi esposa para su SPA .
Asi que me tengo que esmerar para no caer es sus garras !!
La inspiracion de la interfaz es de uno que vi por alli pero ya resulto algo totalmente personalizado.

Lo comenze hace 15 dias
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Detectar un click fuera de un formulario Modal
« Respuesta #7 en: Enero 12, 2015, 08:22:33 pm »
:-)

La paleta de colores está muy bien, no sabia que quedaba tan bien el tono naranja con el tono gris. También siempre fui partícipe de extirpar la barra azul de los formularios que es lo que vengo haciendo por años, siempre me pareció "común".
Felicitaciones y muchos éxitos con el proyecto.
Me encuentras en YAcosta.com

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Detectar un click fuera de un formulario Modal
« Respuesta #8 en: Enero 13, 2015, 08:36:16 pm »
Amigo Yvan sigo con el post y prepare un ejemplo sencillito para graficar lo que necesito.

Esta explicado en el proyecto

https://dl.dropboxusercontent.com/u/53113728/CIE.rar
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Detectar un click fuera de un formulario Modal
« Respuesta #9 en: Enero 13, 2015, 10:24:53 pm »
Estimado, soy el menos indicado para resolver este tipo de inquietud que presumo se resuelve a nivel de Apis, tema en el que no soy experto, yo solo te pase el link  (que marica jaja) .
SIN EMBARGO, tampoco me acobardo y vería alguna forma de resolverlo no importa que no sea la forma adecuada SIEMPRE y cuando no me traiga problemas y lo usaría HASTA QUE encuentre la forma correcta.

Aclaro también que entiendo que tu quieres detectar el click fuera del formulario activo PERO dentro de tu proyecto, sino es así entonces se me complica y en ese caso tendría que dedicarle mas tiempo al tema, pero entiendo que quieres detectar el click no porque quieras detectarlo sino porque quieres evitar que el usuario haga clic en otro formulario de tu proyecto y con ello poder dar un mensaje de que debe usar el formulario activo, en el ejemplo que te mando no doy un mensaje pero si lo dejo en el form activo. Igual se le puede poner un mensaje al pie del form o como prefieras.

Igual algún colega que nos enseñe a mejorar esto se agradece.

P.D: Tema aparte. Doc, y ¿porque no usas el SetParent? recuerdo que con ello se puede hacer un form hijo dentro de otro form (o picture incluso) sin que el form padre sea Mdi.

Aclarado eso, la solución "chafa" pero funcional que conseguí deja de lado a tu timer (de paso nos ahorramos proceso) y los formularios hijos ya no se abrirían como modal.

Insisto, esta es una solución parcial pero funcional que pudiera quedar como definitiva SI ES QUE no se encuentra una forma mejor, ortodoxa si se quiere. Aunque una forma mas chapuza seria poner todo el Formulario padre con enabled = False pero no vi esa opcion porque quiza si se necesite acceder a algun control, el problema de acceder es que te lleva el form activo hacia atras.


Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Detectar un click fuera de un formulario Modal
« Respuesta #10 en: Enero 13, 2015, 10:30:50 pm »
Chester, olvide el enlace. Aqui esta
Me encuentras en YAcosta.com

AxioUK

  • Megabyte
  • ***
  • Mensajes: 108
  • Reputación: +17/-1
  • Modulos GSL
    • Ver Perfil
Re:Detectar un click fuera de un formulario Modal
« Respuesta #11 en: Enero 14, 2015, 08:22:17 am »
Estimados
  Sumándome a las soluciones Chafas como dice el master Yacosta, basándome en tu ejemplo y analizando el code original hice esto

https://www.dropbox.com/s/ggjl7utvfhlexnq/CIE.rar?dl=0

revísalo y nos comentas

Saludos Cordiales

_____________________________
Sé un poco de todo y mucho de nada... ;)

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Detectar un click fuera de un formulario Modal
« Respuesta #12 en: Enero 14, 2015, 10:19:54 am »
Hola Yvan gracias como siempre por tu tiempo y extensa explicacion.

Creo que debo dejar en claro algo.

El click a detectar siempre sería dentro de mi aplicacion por que tiene un form Base (fondo) maximizado y de alli en mas todos los otros son abiertos miForm.Show 1 .
Por este mismo motivo no tengo que desabilitar lo de atras por que no es necesario por que el click que sucede fuera del form activo no afecta en nada a lo otro.
Dicho esto mi intencion es puramente darle al usuario despistado un aviso de que cierre primero el formXXX !!

Ahora veo los ejemplos que me enviaron y les comento.

Saludos
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Detectar un click fuera de un formulario Modal
« Respuesta #13 en: Enero 14, 2015, 05:21:06 pm »
Al final chirizo!!! como decimos en Argentina..

Lo solucione de una manera un poco menos ortodoxa y recorde que hace algun tiempo habia utilizado este metodo en otra aplicacion.

Antes de llamar al formModal llamo a un formulario llamado frmTransparente y este tiene una funcion que se lo transparenta y desde este se llama al otro que va arriba dando el aspecto de que todo lo que esta detras esta bloqueado o atenuado.

vean como queda



si alguno le sirve el ejemplo modifico el que estuvimos compartiendo mas arriba para que lo entiendan bien como funciona.

Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.