Power Builder - AutoSkip en u_sle

   
Vista:

AutoSkip en u_sle

Publicado por Guadalupe Méndez (37 intervenciones) el 11/11/2009 17:02:16
Hola

¿Me podrían decir por favor si existe alguna propiedad como AutoSkip en un sle heredado?, existe en un sle normal, pero estoy aprendiendo a usar controles heredados de las PFC's y necesito saber si existe alguna propiedad parecida al AutoSkip, o como puedo hacer para que mi u_sle tenga esa funcionalidad.

Saludos y Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AutoSkip en u_sle

Publicado por miguell (153 intervenciones) el 11/11/2009 19:11:47
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AutoSkip en u_sle

Publicado por Guadalupe Méndez (37 intervenciones) el 11/11/2009 20:49:07
Muchas gracias

Me ha resuelto mi problema

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar