Antonio, con este c贸digo en tget, metodo Keychar ya funciona el salto con en enter en combobox, estilo CBS_DROPDOWN
聽 聽 聽 聽 case nKey == VK_TAB .or. nKey == VK_RETURN
聽 聽 聽 聽 聽 聽if ::bChange != nil .and. ( ::oGet:Changed .or. ::oGet:UnTransform() != ::oGet:Original )
聽 聽 聽 聽 聽 聽 聽 lAccept = Eval( ::bChange, nKey, nFlags, Self )
聽 聽 聽 聽 聽 聽 聽 if ValType( lAccept ) == "L"
聽 聽 聽 聽 聽 聽 聽 聽 聽if lAccept
//aca no se si es necesario el evaluar si ::IsKindOf( "TCOMBOBOX" ) como el la ultima parte del codigo
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ::oWnd:GoNextCtrl( ::hWnd )
聽 聽 聽 聽 聽 聽 聽 聽 聽endif
聽 聽 聽 聽 聽 聽 聽 else
//aca no se si es necesario el evaluar si ::IsKindOf( "TCOMBOBOX" ) como el la ultima parte del codigo
聽 聽 聽 聽 聽 聽 聽 聽 聽::oWnd:GoNextCtrl( ::hWnd )
聽 聽 聽 聽 聽 聽 聽 endif
聽 聽 聽 聽 聽 聽else
聽 聽 聽 聽 聽 聽 聽 if ::oWnd:IsKindOf( "TCOMBOBOX" ) 聽 聽 聽 //kds - modificado para permitir salto de control con ENTER cuando el get portenece a un combobox
聽 聽 聽 聽 聽 聽 聽 聽 聽::oWnd:oWnd:GoNextCtrl( ::hWnd )
聽 聽 聽 聽 聽 聽 聽 else
聽 聽 聽 聽 聽 聽 聽 聽 聽::oWnd:GoNextCtrl( ::hWnd )
聽 聽 聽 聽 聽 聽 聽 endif
聽 聽 聽 聽 聽 聽endif
este es el programa de prueba
// DropDown ComboBoxes
#include "FiveWin.ch"
function Main()
聽 聽local oDlg, oCbx1, oCbx2
聽 聽local cText1 := " 聽 聽 "
聽 聽local cText2 := " 聽 聽 "
聽 聽local oVar, cVar := space(20)
聽 聽DEFINE DIALOG oDlg FROM 10, 10 TO 20, 50 ;
聽 聽 聽 TITLE "DropDown ComboBox Test"
聽 聽@ 0.5, 1 COMBOBOX oCbx1 VAR cText1 STYLE CBS_DROPDOWN ;
聽 聽 聽 ITEMS { "One", "Two", "Three" } ;
聽 聽 聽 VALID ( Msginfo(1), .t. )
聽 聽@ 2.0, 1 GET oVar VAR cVar PICTURE "@!"
聽 聽@ 3.5, 1 COMBOBOX oCbx2 VAR cText2 STYLE CBS_DROPDOWNLIST ;
聽 聽 聽 ITEMS { "One", "Two", "Three" } ;
聽 聽 聽 VALID ( Msginfo(2), .t. )
聽 聽ACTIVATE DIALOG oDlg CENTERED
return nil
ahora, tengo una duda:
en la clase combobox, m茅todo KeyChar, esta este c贸digo que no veo que se ejecute nunca, dado que la tecla Enter se eval煤a en el m茅todo KeyDown
聽 聽if nKey == VK_RETURN
聽 聽 聽 return ::oWnd:GoNextCtrl( ::hWnd )
聽 聽endif
ademas, la clase combobox no esta evaluando el valid, cuando el tipo es CBS_DROPDOWN, ahi no he podido hallar el problema, si me das una guia,
cabe se帽alar que el valid si funciona si el tipo es CBS_DROPDOWNLIST. por lo que me inmagino que la data ::bValid deberia ser pasada al objeto tget, para que lo evaluara,
tambien habria que revisar el bWhen y bChange.
ademas otra pregunta, antes hace a帽os la clase tcombobox creaba el objeto tget solo si el combobox era CBS_DROPDOWN, ahora lo crea siempre, por que?