Página 1 de 1

Posicionamiento de Menus popup

Publicado: Lun Oct 02, 2006 10:31 am
por jose.luis
Hola,
Dado este código (por ejemplo)
LOCAL oPopMenu
WITH OBJECT oPopMenu := XA_MenuBegin( Self, .T., "Opciones de
listado")
XA_MenuItem( "Opción 1", {|| MsgInfo("1")},,;
.T., .F., .F., .F., ;
.T., "PRINTER1",,">Opciones de listado 1" )
XA_MenuItem( "Opción 2", {|| MsgInfo("2")},,;
.T., .F., .F., .F., ;
.T., "PRINTER1",,">Opciones de listado 2" )
END
Quisiera posicionar ese menu encima de un botón. Pero me gustaría
posicionarlo de tal manera que quede justo encima del botón. Para ello
necesitaría saber la altura del menú a mostrar teniendo en cuenta que el
número de items del menú puede ser variable. ¿Como se puede averiguar?
Sería algo así (osender es un botón del formulario):
METHOD Button1Click( oSender ) CLASS TForm2
Local oPopMenu := ::CreaPopMenu()
::ShowPopupMenu( oPopMenu, oSender:nLeft, oSender:nTop -
oPopMenu:nHeight )
RETURN Nil
Saludos y gracias,
José Luis Capel

Posicionamiento de Menus popup

Publicado: Vie Oct 06, 2006 9:15 am
por jose.luis
Hola,
Quizás no sea un tema específico de Xailer. Voy a mirar por el API de
Windows.
En cualquier caso, gracias.
Saludos,
José Luis Capel
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:[email=4520ce48@news.xailer.com...]4520ce48@news.xailer.com...[/email]
> Hola,
>
> Dado este código (por ejemplo)
>
> LOCAL oPopMenu
>
> WITH OBJECT oPopMenu := XA_MenuBegin( Self, .T., "Opciones de
> listado")
> XA_MenuItem( "Opción 1", {|| MsgInfo("1")},,;
> .T., .F., .F., .F., ;
> .T., "PRINTER1",,">Opciones de listado 1" )
> XA_MenuItem( "Opción 2", {|| MsgInfo("2")},,;
> .T., .F., .F., .F., ;
> .T., "PRINTER1",,">Opciones de listado 2" )
> END
>
>
> Quisiera posicionar ese menu encima de un botón. Pero me gustaría
> posicionarlo de tal manera que quede justo encima del botón. Para ello
> necesitaría saber la altura del menú a mostrar teniendo en cuenta que el
> número de items del menú puede ser variable. ¿Como se puede averiguar?
>
> Sería algo así (osender es un botón del formulario):
>
> METHOD Button1Click( oSender ) CLASS TForm2
> Local oPopMenu := ::CreaPopMenu()
>
> ::ShowPopupMenu( oPopMenu, oSender:nLeft, oSender:nTop -
> oPopMenu:nHeight )
>
> RETURN Nil
>
>
> Saludos y gracias,
> José Luis Capel
>
>

Posicionamiento de Menus popup

Publicado: Vie Oct 06, 2006 1:17 pm
por jose.luis
Hola,
Pues no se encontrar nada en el api de windows que me informe de la altura
de un menu popup...
Saludos,
José Luis Capel
"José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
news:45260280$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> Hola,
>
> Quizás no sea un tema específico de Xailer. Voy a mirar por el API de
> Windows.
>
> En cualquier caso, gracias.
> Saludos,
> José Luis Capel
>
>
> "José Luis Capel" <jose.luis@iaicom.com> escribió en el mensaje
> news:[email=4520ce48@news.xailer.com...]4520ce48@news.xailer.com...[/email]
>> Hola,
>>
>> Dado este código (por ejemplo)
>>
>> LOCAL oPopMenu
>>
>> WITH OBJECT oPopMenu := XA_MenuBegin( Self, .T., "Opciones de
>> listado")
>> XA_MenuItem( "Opción 1", {|| MsgInfo("1")},,;
>> .T., .F., .F., .F., ;
>> .T., "PRINTER1",,">Opciones de listado 1" )
>> XA_MenuItem( "Opción 2", {|| MsgInfo("2")},,;
>> .T., .F., .F., .F., ;
>> .T., "PRINTER1",,">Opciones de listado 2" )
>> END
>>
>>
>> Quisiera posicionar ese menu encima de un botón. Pero me gustaría
>> posicionarlo de tal manera que quede justo encima del botón. Para ello
>> necesitaría saber la altura del menú a mostrar teniendo en cuenta que el
>> número de items del menú puede ser variable. ¿Como se puede averiguar?
>>
>> Sería algo así (osender es un botón del formulario):
>>
>> METHOD Button1Click( oSender ) CLASS TForm2
>> Local oPopMenu := ::CreaPopMenu()
>>
>> ::ShowPopupMenu( oPopMenu, oSender:nLeft, oSender:nTop -
>> oPopMenu:nHeight )
>>
>> RETURN Nil
>>
>>
>> Saludos y gracias,
>> José Luis Capel
>>
>>
>
>

Posicionamiento de Menus popup

Publicado: Vie Oct 06, 2006 11:26 pm
por jlalin
José Luis,
no habí­a visto este mensaje.
Creo que podrí­as calcular la altura del Popup haciendo un wrapper a
GetSystemMetrics() para que te devuelva la altura de una barra del menú:
XA_FUNC( GETMENUBARHEIGHT )
{
hb_retnl( GetSystemMetrics( SM_CYMENU ) );
}
Y multiplicarlo por el número de items que tiene el popup.
nHeight := GetMenuBarHeight() * GetMenuItemCount( hMenu )
Con eso ya podrí­as ajustarlo a la posición del botón.
Saludos,
José Lalí­n

Posicionamiento de Menus popup

Publicado: Mar Oct 10, 2006 12:28 pm
por jose.luis
José,
Gracias por tu respuesta.
>
> Creo que podrías calcular la altura del Popup haciendo un wrapper a
> GetSystemMetrics() para que te devuelva la altura de una barra del menú:
>
> XA_FUNC( GETMENUBARHEIGHT )
> {
> hb_retnl( GetSystemMetrics( SM_CYMENU ) );
> }
>
> Y multiplicarlo por el número de items que tiene el popup.
>
> nHeight := GetMenuBarHeight() * GetMenuItemCount( hMenu )
>
> Con eso ya podrías ajustarlo a la posición del botón.
>
Voy a probarlo.
Saludos,
José Luis Capel