Heriberto.
1) Sobre el rellenado de combobox
No debes preocuparte por el método de rellenado del combo, porque esto depende de varias cuestiones.
En el ejemplo, para no embarullar con una tabla o cursor que también tendría que haber adjuntado, uso un par de listas con el método AddListitem, para RowSourceType = 0. Puedes pensar que el par de listas corresponde a un cursor de dos columnas.
En el form de ejemplo puedes reemplazar el código del Init del Combobox por el siguiente:
En esta versión, con las listas lcListCod y lcListVer genero un cursor (cur_combo1) y relleno el combobox con ese cursor.
1) Todo esto de la generación del cursor no estará en tu modelo porque ya tienes ese cursor generado.
2) La propiedad agregada al form (cs_combo1) que figura como ControlSource del combobox, tiene por objeto que el combobox no se muestre vacío. Fijate que para eso, agrego un registro al cursor, donde el campo "Codigo" está vacío y en el campo "descrip" va la leyenda "(Seleccione Cuenta)".
Alternativamente, podría haber puesto
.ControlSource = 'cur_combo1.codigo'.
Pero esto me obliga a posicionar el puntero de registro del cursor en un lugar determinado.
Si necesitas que el combobox vuelva a su posición por defecto:
Thisform.cs_combo1=""
thisform.container1.combo1.refresh
Si necesitas que el combobox muestre el valor del cuadro que se enfoca:
*<GotFocus Event>
Thisform.cs_combo1 = alltrim(this.text)
This.parent.combo1.refresh
*</GotFocus Event>
Fijate que con este código, si el textbox está vacío, el combobox mostrará "(seleccione Cuenta)" y si no, mostrará el nombre de la cuenta coincidente.
2) Sobre la mecánica de selección y asignación de valores
Acá juega la propiedad agregada al combobox (ObjRetVal).
Al asignar
This.parent.combo1.ObjRetVal = This
dentro del objeto Textbox de que se trate, le estamos diciendo al combobox cuál es el objeto al que debe dirigir la respuesta y el foco posterior.
La propiedad ObjRetVal no contiene el nombre del objeto, sino la referencia de objeto, con lo cual podemos operar directamente como si la propiedad fuera el objeto mismo.
De ahí que en el Click Event del ComboBox, podemos hacer
Fijate que al perder el foco el Combobox (Combo1.LostFocus) la propiedad ObjRetVal vuelve a tomar el valor nulo.