FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Componente que se oculte al hacer click fuera de él.
Buenas tardes.
Llevo buscando desde hace algún tiempo un componente o código, que permita que un TPanel (o similar) se oculte al hacer click fuera de él. Cuando digo fuera me refiero a que puedo hacer click en cualquier parte de la aplicación, así que no se sobre que componente lo haré. No he encontrado nada que me resulte efectivo 100%. Espero vuestros consejos y gracias de antemano.
__________________
http://www.gestionportable.com |
#2
|
||||
|
||||
Pero eso te corresponde a ti decidirlo, puedes crear un procedimiento al que asignes como evento onlick a todos los componentes, incluido el formulario, menos al panel.
|
#3
|
||||
|
||||
Gracias por la idea Casimiro, pero necesito una solución global. No se lo que puede haber fuera del panel. Ese panel puede aparecer en cualquier momento y necesito que se oculte al hacer click en cualquier punto de la pantalla fuera de él. Debería funcionar como un popup menú.
__________________
http://www.gestionportable.com |
#4
|
||||
|
||||
Ah, vale, entonces ese panel lo abres sobre otro transparente que ocupe por completo la pantalla, así, pulses donde pulses, estarás haciéndolo sobre ese otro panel transparente.
|
#5
|
||||
|
||||
Sólo se me ocurre que utilices un Edit (por ejemplo) dentro del panel y aproveches el evento OnExit del Edit para ocultar el panel.
Das pocos detalles más, de la aplicación, de lo que habrá en el TPanel, de cuando y cómo lo vas a visualizar,... así que no se si esto cuadra con lo que necesitas... Este ejemplo ilustra lo que quiero decir Es la solución que se me ocurre para que no tengas que tocar nada el resto de componentes del form ni de la aplicación. Lo único es que al visualizar el panel, debes pasar el foco al Edit. Revisa el código del ejemplo.
__________________
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. |
#6
|
||||
|
||||
Gracias a los dos por las ideas aportadas.
La verdad es que en Lazarus hay unos componentes llamados Luicontrols (LuiPack) que tienen uno llamado dropdownmanager que hace exactamente eso con cualquier elemento visual y funciona muy bien. Desgraciadamente mis conocimientos no dan para adaptarlo a Delphi, a pesar de ser poco código. https://code.google.com/p/luipack/so...ownmanager.pas Imagino que tiene que haber forma de interceptar de algún modo el evento click a nivel global y saber si está (por coordenadas) dentro o fuera del panel. A ver si me explico. La aplicación genera unos mensajes (alertas) que aparecen en pantalla dentro de un panel. Dicho panel tiene un botón de cerrar, pero me han pedido que funcione como el previsualizador de imagenes de las webs, que al dar click fuera de ellas se cierran. El concepto es bastante sencillo, pero no acierto a dar con algo que funcione como deseo. Probaré lo que comentais.
__________________
http://www.gestionportable.com |
#7
|
||||
|
||||
Hola pacopenin.
Otra opción es : Formulario en que se encuentra el Panel,
Formulario principal, Me apego a lo que solicitas en tu mensaje "hacer click en cualquier parte de la aplicación". En el ejemplo, el panel será visible nuevamente cuando se destruya y cree el formulario que lo contiene. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#8
|
||||
|
||||
Hola de nuevo.
Solo para decirte que el procedimiento, si bién no afecta, no es necesario. Me quedó de una prueba anterior , lo podes quitar. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#9
|
||||
|
||||
Hola ecfisa. Creo que lo que aportas puede servirme.
La aplicación es un form principal y las distintas opciones (clientes, articulos, facturas, etc) se abren en distintos tabs, por lo que los mensajes se generan en ese formulario y el panel en cuestión está también es él. Dentro de cada tab está "incrustado" el form correspondiente a clientes, artículos, facturas ...etc. por eso es imposible saber donde se hace click ya que depende del tab en el que estemos.
__________________
http://www.gestionportable.com |
#10
|
||||
|
||||
Hola pacopepin.
Cita:
Anque no está en el ejemplo, podes hacer visible el panel desde cualquier form que incluya a form2, ej.:
Saludos Edito: Creo que en versiones posteriores a Delphi 7 ya están publicados los eventos OnMouseEnter y OnMouseLeave.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 14-05-2015 a las 20:05:55. Razón: agregar comentario |
#11
|
||||
|
||||
Aparentemente funciona bien con la solución sugerida por ecfisa. Gracias a todos,
__________________
http://www.gestionportable.com |
#12
|
||||
|
||||
Hola pacopepin.
Afinando un poco el lápiz podría quedar así:
Form donde se quiere usar:
form principal:
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 14-05-2015 a las 22:00:47. |
#13
|
|||
|
|||
Lo que dice ecfisa puede servirle al amigo. Igualmente aclaro que lo que quiere hacer es algo asi como los popups que cuando se presiona en cualquier parte de la aplicación con el mouse se oculta, si es que esta visible.
Lo que pide no es algo aro de hacer, tendre que buscar el mi cajon de cosas pasadas y ver si encuentro algo que he realizado hace un tiempo para algo similar. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
llamar formulario al hacer click en un tabSheet del componente PageControl | novato_erick | OOP | 9 | 06-09-2012 21:55:09 |
Como hacer que mi aplicacion oculte otra | mefixxto | API de Windows | 1 | 27-10-2010 17:39:10 |
Como hacer conexion con sql server fuera de la ciudad. | uper | MS SQL Server | 1 | 06-12-2007 21:19:40 |
Hacer una pausa fuera del evento OnTimer y sin usar Sleep | DarkByte | Varios | 9 | 28-06-2007 04:08:00 |
Hacer invisible un grid al pulsar fuera | apicito | OOP | 2 | 27-06-2003 13:38:53 |
|