hola,
lo que tienes que hacer:
1) añadir un nuevo evento al singleLineEdit. ('new' en la lista de sus eventos) y elegir el evento 'pbm_keydown' bajo 'event_id'. Darle también un nombre bajo la etiqueta: 'event name' como por ejemplo 'tecla_sle':
2) en la propiedad del singleLineEdit pones el límite a por ejemplo 10. (pestaña 'general', bajo 'limit'.
el anterior paso no es realmente necesario , pero así el siguiente código te vale para todos los sle's y podrás hacer una sle 'padre' para evitar tener que repetir el código y tener que añadir el evento pbm_keydown cada vez que quieres hacer un sle parecido.
3) codificar el evento 'tecla_sle' nuevo que has creado:
--------------------------------------------------------------------------
integer li_maximo
li_maximo = this.limit
if li_maximo = 0 then
return // no limitamos y no hacemos auto-skip
end if
if len( this.text ) = li_maximo - 1 then // -1 porque todavía no está el nuevo carácter tecleado ...
sle_2.setfocus( ) // o cualquier control que quieras que se activa y reciba el foco
end if
// fin del código
uso el 'li_maximo - 1' porque si has puesto por ejemplo un límite de tres, al teclear el tercer carácter, este todavía no está en el texto (lo estará cuando termine el evento de tecla_sle) y entonces si 'ya hay dos carácteres' y estamos 'introduciendo la tercera' , ya queremos saltar a otro objeto (sle_2 es sólo un ejemplo).
Si lo quiere hacer de forma genérica y 'bonito': en vez de poner sle_2.setfocus() de forma fija, recorres el array "control" de la ventana / objeto y determinas los taborder / tabsequences de cada control. Podrás ver cuál es el siguiente objeto al que tienes que saltar, mirando el taborder del que ejecuta el codigo y buscando la siguiente según ese orden hacia donde quieres mandar el foco.
espero que te ayuda,
saludos,
Miguel L.