![]() |
Menu DropDown en Boton
Que tal grupo, estoy intentando desplegar un menu cuando hago clic en un boton (algo similar a lo que se consigue con los toolbutton de las toolbar), pero sucede que me aparece totalmente desalineado, quisiera alinear el popup menu para que aparezca justo arriba del boton, para que se vea mas 'pulido', pero el boton esta en un panel, asi que las propiedades Left y Top que uso para llamar al popup menu son relativas al panel y no al formulario por lo que aparece muy distante el menu del boton... como puedo solucionarlo?
|
boton.left + boton.parent.left
boton.top + boton.parent.top ¿no te serviria? Hasta luego. ;) |
saluditos |
Cheke leke, agradezco a ambos, funciona bien, la verdad ya se me habia ocurrido algo como lo de Juan, pero queria corroborar otras posibles soluciones... :D
|
nada mejor que un foro para ese propósito no? :):d
|
No vale poniendo el popupMenu en Left el TrackButton y asignando el Poppup al botón ???
|
Cita:
// Saludos |
En realidad lo que deseaba era que la esquina inferior izquierda del menu apareciera alineada con la esquina superior izquierda del boton, pero no lo he logrado, con las soluciones actuales aparece a veces, y a veces no, depende del numero de items (es que seran muchos botones con sus respectivos menus, es una clase). Supongo que deberia calcular el alto del menu para restarlo a la posicion del boton y que aparezca exactamente alineada, pero la propiedad height no existe en el popup menu.
Lo que busco es exactamente lo que se logra al asignar la propiedad PopupMenu del boton y activar dicho Popup mediante la tecla aplicacion de windows, de esa forma sale correctamente alineado (Solo cuando el boton tiene el enfoque). He estado explorando el codigo de la VCL y he visto que lo del popup menu es un mensaje de Windows, que Delphi captura en la clase TControl (no sé si se genera este mensaje al activar el popup mediante la tecla aplicacion :( ), pero no he encontrado nada de la tecla aplicacion y no he podido ver como lo logra al activar el menu mediante esta tecla. |
Segun mis investigaciones un MenuItem tiene 20 pixeles de alto, y el popup menú es una ventana sin bordes, así que intenta partir de ahí, para contar los items y alinearlo como quieras.
Mis investigaciones han consistido en medir en tiempo de diseño el alto de un TmenuItem con un programa que realicé hace mucho tiempo, unas simples reglas horizontales y verticales en pixeles :D. No es nada científico, pero si un popup tiene 7 elementos, el alto final me daba 141 pixel, y el que tenia el foco, medía exactamente 20, useasé, que no va mal encaminado. Ojo: si utiliza las fuentes grandes pasa a ser 23 o 24 pixeles, esto no lo he corroborado "científicamente" :D por no querer reiniciar, si quieres pidemelo y te lo miro bien. Comentas que a veces no sale bien.... la verdad, uso el ClientToScreen bastante y cuando no sale correctamente es porque he intercambiado los parámetros X e Y al pasarlo al método ClientToScreen :D .También puede que interfiera algo de lo que haces desde que calculas el punto y hasta que ordenas que salga el popup. Saludos, espero te sirva de punto de partida. |
La franja horaria es GMT +2. Ahora son las 00:39:35. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi