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
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Posicionamiento de Menus popup
Posicionamiento de Menus popup
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
>
>
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
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
>>
>>
>
>
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
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
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
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
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