FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Hint en items de un ComboBox
Hola amigos del foro, una vez más me dirijo a ustedes solicitando su generosa ayuda. Tengo en mi aplicación varios Combobox pero el ancho de muchos de ellos no es suficiente para la longitud del item, quedando parte de este oculto para el usuario, me gustaría que al posicionar el mouse sobre uno de estos ítems se mostrara un Hint o algo por el estilo que permita la lectura de todo su contenido.
De antemano muchas gracias. Un cordial saludo Yusnerqui.
__________________
Lo importante no es llegar primero, sino saber llegar. Para que puedas llegar mejor lee la Guia de Estilo |
#2
|
||||
|
||||
¿Te refieres a que cuando se despliegue la lista de items, al ir recorriendo con el ratón se muestre un hint indicando el texto completo?
Pues en estos momentos no sé cómo hacerlo pero ¿no te sirve aumentar el ancho de la lista, no del combo, solo de la lista desplegable? - ¿Cómo se aumenta el ancho? - Con la propiedad DropDownWidth - No hay propiedad DropDownWidth - ¿Nooo? Pero si un DBLookUpComboBox sí tiene esa propiedad, ¿dónde la habrá dejado Borland? Entonces usa ComboBox1.Perform(CB_SETDROPPEDWIDTH, 300, 0); // Saludos |
#3
|
||||
|
||||
Gracias
Muchas gracias Roman, es lo que tengo hecho hasta ahora, pero me gustaría mostrar los hint, es más elegante, puesto que en ocasiones tengo items muy pequeños y otros más largos en el mismo combo y no se ve muy estético que digamos.
De todos modos mil gracias, y si alguien tiene otra idea será bienvenida, por mi parte comencé a trabajar haciendo una componente que heredé del TCombobox, usando un TTimer y el evento onDrawItems voy a ver que saco, aunque esto tiene como inconveniente que este evento solo se dispara cuando la propiedad Style tiene ciertos valores... En fin si logro algo después les cuento Saludos y reitero mi agradecimiento.
__________________
Lo importante no es llegar primero, sino saber llegar. Para que puedas llegar mejor lee la Guia de Estilo |
#5
|
||||
|
||||
Cita:
Básicamente usas el evento OnIdle de una componente TApplicationEvents que se genera cada vez que la aplicación no se encuentra procesando un mensaje, o sea, virtualmente casi siempre, de manera que evitas el uso de un Timer. En este evento usas funciones de la API de Windows para: 1. Determinar la ventana que esté bajo el cursor. 2. Determinar si esta ventana es de tipo ComboLBox- el tipo de ventana de la lista desplegable del combo. 3. En tal caso, obtener el ítem de la lista bajo el cursor. Con esto ya tienes el texto que debes mostrar en el hint y mandando el mensaje LB_GETITEMRECT a la lista obtienes la posición del ítem y por tanto el lugar donde debes desplegar el hint. Tiene el problema de que si tienes varios combos, será un poco difícil determinar a cuál de ellos pertenece la lista aunque supongo que podrías examinar la propiedad DroppedDown de cada uno de ellos para ver cuál tiene desplegada la lista. ----- Otra opción es crearte un derivado de TComboBox que haga lo siguiente: 1. Determine el identificador de su lista desplegable 2. Reemplace el manejador de ventana de esta lista para poder detectar el mensaje WM_MOUSEMOVE y saber así cuándo mostrar el hint. 3. Determine ahí mismo si realmente es necesario mostrar el hint comparando la longitud del ítem con el ancho de la lista. 4. Si es necesario mostrar el hint, crear una ventana THintWindow para mostrarlo. Si te interesa, puedes ver la componente TComboHintsBox que hace todo esto en mi página. Apenas la he programado así que muy posiblemente tenga detalles que haya que revisar pero es un comienzo... // Saudos |
#6
|
||||
|
||||
Mil Gracias
Un par de días alejado de internet casi hacen que me pierda este magnífico post de el amigo Román, pues solo me resta agradecerte y comenzar a probar lo que me dices, además confesarte que con cada post que publicas aprendo más que en una hora búsquedas por internet(no por esto voy a dejar de esforzarme buscando antes de lanzar una pregunta) pero de veras que la calidad de tus respuestas es admirable, sin menospreciar a los demás chicos del equipo que también se esfuerzan y ofrecen el tiempo del que disponen en ayuda de los necesitados.
En fin mil gracias a todos, que tengan una feliz navidad y un próspero año nuevo. Saludos Yusnerqui
__________________
Lo importante no es llegar primero, sino saber llegar. Para que puedas llegar mejor lee la Guia de Estilo |
#7
|
|||
|
|||
buenas la verdad estoy trando de hacer lo mismo que el amigo yusnerki, pero no he encontrado nada y la pagina que publica roman no se encuentra, alguien que sepa la solucion me podria ayudar.... muchas gracias
__________________
JaiMelendez |
#8
|
||||
|
||||
#9
|
|||
|
|||
gracias Roman, la verdad hay muy pocas personas como usted... que ayudan a los demas de una forma desinterezada.
__________________
JaiMelendez |
#11
|
||||
|
||||
Amigo Roman me encuentro en la misma tesitura que el resto y no puedo descargar tu componente.
Se que el post es mega antiguo pero ¿no lo tendrias aun para podermelo pasar? Me harias un favor grande. |
#12
|
||||
|
||||
Aquí está
LineComments Saludos |
#13
|
||||
|
||||
Mil gracias amigo!!! Lo he probado y eres un crack.
Tengo que aprender a hacer estas cosas |
|
|
|