Problema con el teclado

Problema con el teclado

Postby jgayoso » Wed Dec 28, 2011 3:35 pm

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.
jgayoso
 
Posts: 170
Joined: Sat Aug 07, 2010 11:36 pm
Location: Chile

Re: Problema con el teclado

Postby Antonio Linares » Wed Dec 28, 2011 7:06 pm

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42111
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Problema con el teclado

Postby jgayoso » Thu Dec 29, 2011 2:25 pm

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

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
jgayoso
 
Posts: 170
Joined: Sat Aug 07, 2010 11:36 pm
Location: Chile

Re: Problema con el teclado

Postby jgayoso » Tue Jan 03, 2012 6:59 pm

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,
jgayoso
 
Posts: 170
Joined: Sat Aug 07, 2010 11:36 pm
Location: Chile


Return to FiveLinux / FiveDroid (Android)

Who is online

Users browsing this forum: No registered users and 11 guests