Tengo el siguiente problema al recorrer el menú con el teclado la pantalla de la opción de prueba que corresponde a un dialogo, no recibe el foco.
En el menú queda Salir con AZUL y el boton CANCELAR no figura marcado con borde AZUL
En cambio al recorrerlo con el Mouse si pasa el foco al dialogo.
En el menú queda Salir sin AZUL y el boton CANCELAR figura marcado con borde AZUL
Adjunto aplicativo menu.prg
Se agradece cualquier ayuda.
#include "FiveLinux.ch"
Procedure Main(cOpcion0,cOpcion1)
Public oWnd_Principal,oMenu_Horizontal,oMenu_Vertical1,oMenu_Vertical2
DEFINE WINDOW oWnd_Principal TITLE hb_strtoutf8('PRUEBA DE MENU') SIZE 1024, 690
MENU oMenu_Horizontal
MENUITEM 'Horizontal 1'
MENU oMenu_Vertical1
MENUITEM 'Vertical 1' ACTION fAccion(1)
MENUITEM 'Vertical 2' ACTION fAccion(2)
ENDMENU
MENUITEM "Salir"
MENU oMenu_Vertical1
MENUITEM "Prueba" ACTION fAccion(3)
SEPARATOR
MENUITEM "Salir" ACTION fAccion(4)
ENDMENU
ENDMENU
oWnd_Principal:SetMenu(oMenu_Horizontal)
oWnd_Principal:Show()
msgalert('Inicio')
oMenu_Horizontal:SelItem( 1 )
ACTIVATE WINDOW oWnd_Principal
Return .T.
Function fAccion(nAccion)
do case
case nAccion=1
msgalert('Vertical 1')
case nAccion=2
msgalert('Vertical 2')
case nAccion=3
fDlg()
case nAccion=4
oWnd_Principal:End()
endcase
if nAccion<3
oMenu_Horizontal:SelItem( 1 )
else
oMenu_Horizontal:SelItem( 2 )
endif
Return .T.
Function fDlg()
DEFINE DIALOG oDlg
@2,5 say 'PRUEBA PRUEBA' of oDlg
@5,2 BUTTON oBtn1 PROMPT 'CANCELAR' ACTION oDlg:End()
@5,15 BUTTON oBtn2 PROMPT 'RETORNAR' ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTER
Return .T.
Problema con el teclado
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Problema con el teclado
Jorge,
Pero es que los dos no pueden tener foco simultaneamente. Tienes que decidir cual de los dos quieres que lo tenga.
Lo estandard es que sea el diálogo
Pero es que los dos no pueden tener foco simultaneamente. Tienes que decidir cual de los dos quieres que lo tenga.
Lo estandard es que sea el diálogo
Re: Problema con el teclado
El problema es que si yo avanzo por el teclado al dialogo no es lo mismo que si avanzo al dialogo por Mouse.
Ejecuta el aplicativo enviado y utiliza el teclado para desplazarte y luego has lo mismo con el Mouse, veras que con el Mouse se pasa el control al dialogo y el botón CANCELAR queda destacado, sin embargo al desplazarse con el teclado no.
No se si me explico bien, pero si compilas y ejecutas deberías poder replicar el problema.
Se agradece desde ya.
Jorge Gayoso
Ejecuta el aplicativo enviado y utiliza el teclado para desplazarte y luego has lo mismo con el Mouse, veras que con el Mouse se pasa el control al dialogo y el botón CANCELAR queda destacado, sin embargo al desplazarse con el teclado no.
No se si me explico bien, pero si compilas y ejecutas deberías poder replicar el problema.
Se agradece desde ya.
Jorge Gayoso
Antonio Linares wrote:Jorge,
Pero es que los dos no pueden tener foco simultaneamente. Tienes que decidir cual de los dos quieres que lo tenga.
Lo estandard es que sea el diálogo
Re: Problema con el teclado
Ya lo solucione.
Después de seleccionar con el teclado en un menú item:
gdk_keyboard_ungrab()
gdk_pointer_ungrab()
HB_FUNC( GDK_KEYBOARD_UNGRAB )
{
gdk_keyboard_ungrab(0);
}
HB_FUNC( GDK_POINTER_UNGRAB )
{
gdk_pointer_ungrab(0);
}
Saludos cordiales,
Después de seleccionar con el teclado en un menú item:
gdk_keyboard_ungrab()
gdk_pointer_ungrab()
HB_FUNC( GDK_KEYBOARD_UNGRAB )
{
gdk_keyboard_ungrab(0);
}
HB_FUNC( GDK_POINTER_UNGRAB )
{
gdk_pointer_ungrab(0);
}
Saludos cordiales,