Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Hint en items de un ComboBox (https://www.clubdelphi.com/foros/showthread.php?t=16956)

yusnerqui 17-12-2004 15:27:45

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.:)

roman 17-12-2004 18:57:58

¿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? :confused:

Entonces usa

ComboBox1.Perform(CB_SETDROPPEDWIDTH, 300, 0);

// Saludos

yusnerqui 17-12-2004 21:46:22

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.

Fernando 18-12-2004 18:07:51

Hola Dephicólicos:

En Trucomanía (www.q3.nu) existen algunos ejemplos para ComboBox. Tal vez modificándolos se logre desplegar el Hint que necesitas.

Salu2

roman 21-12-2004 10:23:59

Cita:

Empezado por yusnerqui
y si alguien tiene otra idea será bienvenida

Una forma relativamente sencilla es usando esta idea de Peter Below de los foros de Borland.

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

yusnerqui 23-12-2004 20:47:41

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:)

JAI_ME 08-02-2007 19:21:10

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.... :D muchas gracias

roman 08-02-2007 19:25:07

Prueba aquí

http://romansg.net

// Saludos

JAI_ME 08-02-2007 19:32:31

gracias Roman, la verdad hay muy pocas personas como usted... que ayudan a los demas de una forma desinterezada.

roman 08-02-2007 19:39:49

Hombre, gracias por el piropo, pero, felizmente, en este Club hay muchísimos foristas que ayudan a otros, todos sin ningún interés. Y cada vez hay más :)

// Saludos

aguml 14-12-2017 12:03: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.

roman 14-12-2017 16:42:58

1 Archivos Adjunto(s)
Aquí está :)



LineComments Saludos

aguml 14-12-2017 17:45:19

Mil gracias amigo!!! Lo he probado y eres un crack.
Tengo que aprender a hacer estas cosas :p


La franja horaria es GMT +2. Ahora son las 02:49:46.

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