Hola,
Pues eso, que no sé como hacer que con intro en un ttreeview sea como aceptar o con ESC me pueda salir o ejecutar una acción.
No sé como capturar estas teclas en un tree. ¿ Se puede hacer ?
Joaquín Martínez
Hola,
Pues eso, que no sé como hacer que con intro en un ttreeview sea como aceptar o con ESC me pueda salir o ejecutar una acción.
No sé como capturar estas teclas en un tree. ¿ Se puede hacer ?
Horacio,
¿Pero como capturo return y Esc?
oTree:bKeyDown := {|n| ProcKeyTree(n) }
...
function Prockey(n)
do case
case n==VK_ESC
...
return 1
case n==VK_RETURN
...
return 1
enddo
return nilHola Carlos,
¿ Ese código lo has probado con un ttreeview ?
Porque yo pongo otree:bkeydown :={|nkey| msginfo(nkey) }
Y nunca muestra nada con Enter ni Esc.
Joaquin,
Prueba a implementar el método KeyDown() en la clase TTreeView
METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS TTreeView2
local oItem
do case
case nMsg == WM_CHAR
if nWParam == VK_RETURN
return 1
endif
case nWParam == VK_RETURN .or. nWParam == VK_ESCAPE
if ::bKeyDown != nil
return Eval( ::bKeyDown, nWParam, 0, Self )
endif
endcase
return ::Super:HandleEvent( nMsg, nWParam, nLParam )Joaquín,
Para mantener la lógica de FiveWin, lo has intentado asi ?
case nMsg == WM_KEYDOWN
...
ó
case nMsg == WM_CHAR
Antonio,
Ese es el principal problema, al pulsar Intro, se recibe nMsg==135
Que según veo, corresponde al define WM_GETDLGCODE. No recibe ni Keydown ni Char.
No sé como habría que hacerlo correctamente para capturar Return y Esc.
METHOD GetDlgCode( nLastKey ) INLINE DLGC_WANTALLKEYSMETHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS TTreeView
local oItem
do case
case nMsg == WM_KEYDOWN
if ::bKeyDown != nil
return Eval( ::bKeyDown, nWParam, 0, Self )
endif
return 0
endcase
return ::Super:HandleEvent( nMsg, nWParam, nLParam ) case nMsg == WM_KEYDOWN
return ::KeyDown( nWParam, nLParam ) METHOD GetDlgCode( nLastKey ) INLINE DLGC_WANTALLKEYS
METHOD KeyDown( nKey, nFlags )METHOD KeyDown( nKey, nFlags ) CLASS TTreeView
if ::bKeyDown != nil
return Eval( ::bKeyDown, nKey, nFlags, Self )
endif
return ::Super:KeyDown( nKey, nFlags )Joaquin,
correcto, gracias ![]()