Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-08-2004
lafirma lafirma is offline
Miembro
 
Registrado: May 2003
Ubicación: Honduras
Posts: 159
Poder: 16
lafirma Va por buen camino
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?
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #2  
Antiguo 07-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: May 2003
Ubicación: Guatemala
Posts: 6.243
Poder: 22
jachguate Va por buen camino
boton.left + boton.parent.left
boton.top + boton.parent.top

¿no te serviria?

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 07-08-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: May 2003
Posts: 7.424
Poder: 23
Lepe Va por buen camino
Código Delphi [-]
var p:Tpoint;
begin
  p:= panel1.clienttoscreen(Point(boton.left,boton.top)); // pasamos coordenadas relativas a pantalla.
  popupmenu1.popup(p.x,p.y);
end;

saluditos
Responder Con Cita
  #4  
Antiguo 07-08-2004
lafirma lafirma is offline
Miembro
 
Registrado: May 2003
Ubicación: Honduras
Posts: 159
Poder: 16
lafirma Va por buen camino
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...
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #5  
Antiguo 09-08-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: May 2003
Posts: 7.424
Poder: 23
Lepe Va por buen camino
nada mejor que un foro para ese propósito no? :d
Responder Con Cita
  #6  
Antiguo 10-08-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: Sep 2003
Ubicación: Desconocido
Posts: 1.321
Poder: 17
DarkByte Va por buen camino
No vale poniendo el popupMenu en Left el TrackButton y asignando el Poppup al botón ???
__________________
:)
Responder Con Cita
  #7  
Antiguo 10-08-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: May 2003
Ubicación: Ciudad de México
Posts: 20.173
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Cita:
Empezado por DarkByte
No vale poniendo el popupMenu en Left el TrackButton y asignando el Poppup al botón ???
Según la ayuda de Delphi la propiedad TrackButton sólo funciona cuando el menú está asociado a un ToolBar Button. Por otro lado, aun suponiendo que funciona el problema es justo que el resultado no se vería muy 'pulido' ya que la posición del menú variaría según el punto específico donde el usuario presione el botón. Con la solución expuesta por Lepe el menú aparece siempre con su esquina superior izquierda alineada con la correspondiente esquina del botón, lo cual me parece era el objetivo original de lafirma.

// Saludos
Responder Con Cita
  #8  
Antiguo 10-08-2004
lafirma lafirma is offline
Miembro
 
Registrado: May 2003
Ubicación: Honduras
Posts: 159
Poder: 16
lafirma Va por buen camino
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.
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #9  
Antiguo 11-08-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: May 2003
Posts: 7.424
Poder: 23
Lepe Va por buen camino
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 . 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" 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 .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.

Última edición por Lepe fecha: 11-08-2004 a las 11:54:35.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:20:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi