RE:Bajando con Enter para Miguell
bueno ya entiendo mejor tu pregunta e incluso he podido deducir qué es lo que hace el send( ) (genera una tecla tab, con lo cual avanzarás a la columna siguiente de tu registro que estás editando)
"send(handle(this),256,9,long(0,0))
esto indica que al presionar enter en los campo uno va bajando" = avanzar a la siguiente columna según los taborders asignadas a las columnas en tu datawindow.
"pero al presionar al inicio del primer campo y segundo o otro llega al final del ingreso."
-> entonces lo primero que tienes que hacer es arreglar los taborders asignados a tus columnas: abres el datawindow y eliges el menú 'Format' y luego 'Taborder': verás que se muestran en rojo el orden de tabulación asignado. Los que están a 0 no podrás editar, por eso a lo mejor te está haciendo los saltos tan raros que tienes.
"lo que yo necesito cuando llega al final del campo me grabe sin tener que elegir el bottom Grabar y cierre la ventana del Ingreso y vuelva a Ingresar otro":
-> entonces lo que tienes que hacer (en tu evento 'tecla_enter', es comprobar si estás en la última columna, grabar los cambios, insertar una nueva fila/registro (si sólo quieres tener una fila en el dw reseteas primero el dw), y te posicionas en la primero columna.
si metes éste código en tu 'tecla_enter' la cosa irá mejor (arregla primero los taborders de tu dw):
evento tecla_enter:
-----------
long ll_fila_nueva
// en mi datawindow, la primera columna es 'nom_primera_col' y la última es 'nom_ultima_col'
if this.getcolumnName() <> 'nom_ultima_col' then
// generar una tecla 'tabuladora'
send(handle(this),256,9,long(0,0)) // no estamos en la última todavía y avanzamos a la siguiente columna
return
end if
// si llegamos aquí es porque estamos en la última columna ( en mi caso 'nom_ultima_col')
// --------
// 1. grabar el registro/fila actual
if this.update() = 1 then
// todo bien
commit;
else
messagebox('debug', 'ha occurrido un error al grabar: ' + sqlca.sqlerrtext )
return
end if
// 2. insertar una nueva fila al final y posicionarte en ella
// si sólo quieres una fila a la vez en el dw entonces haz primero un: "this.reset( )"
ll_fila_nueva = this.insertrow( 0 )
this.scrollToRow( ll_fila_nueva) // ir a la fila insertada
// 3. posicionarte en la primera columna de la nueva fila
this.setcolumn( 'nom_primera_col')