Problema con el teclado

Post Reply
jgayoso
Posts: 170
Joined: Sat Aug 07, 2010 11:36 pm
Location: Chile

Problema con el teclado

Post by jgayoso »

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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Problema con el teclado

Post by Antonio Linares »

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

Re: Problema con el teclado

Post by jgayoso »

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

Post by jgayoso »

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,
Post Reply