RE:desplegar el dddw, cuando reciba el foco
Para evitar ambiguedades, la acción que ejecute el usuario, tendría que ser la siguiente: Cuando el focus esté en el campo que posee el dddw, que éste se despliegue automáticamente. Luego el usuario debe elegir un item del dddw con las flechas ARRIBA y ABAJO, y finalmente confirmar su elección, pulsando la tecla ENTER para pasar inmediatamente al otro campo. Si es así, los pasos son:
1. Es buena idea que vayas de un campo a otro con la tecla ENTER, en vez del TAB (que es la opción por defecto de PB). Recordemos brevemente que en el control dw_1, debes crear un evento de usuario. Es decir:
Event Name: MIEVENTO
Event ID: pbm_dwnprocessenter
Y pegas el siguiente script:
//-------------------------------
Post( Handle(this),256,9,0 )
Return 1
2. En Local Externals Functions, declaras:
SUBROUTINE keybd_event( int bVk, int bScan, int dwFlags, int dwExtraInfo) &
LIBRARY "user32.dll"
3. En el evento ItemFocusChanged del control dw_1, pegas:
if this.getcolumnname() = 'nombre_columna' then
integer li_vkey
li_vkey = 115 //Tecla F4
dw_1.setfocus()
keybd_event( li_vkey, 1, 0, 0 )
end if
//----------Fin-------------