RE: TAB y SHIFT+TAB en DW (más de lo mismo)
Acá tienes otro ejemplo. Lo que hace es lo siguiente:
- La tecla: keyDownArrow! (se comportará como TAB)
- La tecla: keyUpArrow! (se comportará como SHIFT+TAB).
1. Declarar en global external function:
subroutine keybd_event(char VK, char Scan, ulong Flags, ulong ExtraInfo) library "user32.dll"
2. Declarar un evento de usuario en el control DW:
name: ue_key id: pbm_dwnkey
3. En este evento ue_key, colocar algo similar a:
choose case key
// Mapear up arrow a SHIFT+TAB
case keyUpArrow! //, keyLeftArrow!
keybd_event(char(16), char(42), 0, 0)
keybd_event(char(9), char(15), 0, 0)
keybd_event(char(9), char(15), 2, 0)
keybd_event(char(16), char(42), 2, 0)
// Mapear down arrow a TAB
case keyDownArrow! //, keyEnter!
keybd_event(char(9), char(15), 0, 0)
keybd_event(char(9), char(15), 2, 0)
//*** Tiene el mismo efecto que:
// Post(handle(this), 256, 9, 0)
// Poner cualquier tecla(s) que se quiere ignorar
case keyPageUp!, keyPageDown!, keyHome!, keyEnd!
// no hacer nada
case else
return // proceso por defecto
end choose
message.Processed = True
return 1
//-------Fin------------
Fuente: Yo Wei Tjong