Power Builder - Gestión del Itemchanged

 
Vista:

Gestión del Itemchanged

Publicado por marianux (20 intervenciones) el 02/09/2003 19:52:15
Hola, qué hay.
Estamos trabajando con unos dw en donde según parámetros se ejecutará el código en el itemchanged o un evento llamado por este en forma post event.
El problema surge que cuando se ejecuta el código de esta manera queremos que, si el valor no es correcto, vuelva al campo origen del evento y que si vuelve a teclear el tab dispare el itemchanged.
Es decir, queremos que tenga el mismo comportamiento que si estuviera en el itemchanged.
Por cuestiones de validaciones tenemos que ponerlo en un evento post event. Alguien sabe cómo hacerlo?. que vuelva al campo origen no es problema. Lo que no nos funciona es que, aunque no escriba nada, dispare el evento itemchanged.
Un saludo
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:Gestión del Itemchanged

Publicado por SnakeLogan (32 intervenciones) el 02/09/2003 20:04:16
Buenas.

Ni idea de como hacer eso; aunque puede que sea un problema de planteamiento; es normal que el "ItemChanged" no salte cuando el "Item no ha cambiado".

Si siempre haceis ese control haya o no datos en el campo, no os vendría mejor el "RowFocusChanged" ???

Un Saludo y Suerte.
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:Gestión del Itemchanged

Publicado por marianux (20 intervenciones) el 02/09/2003 20:13:27
Te explico. Es un campo numérico, tú pones una cifra pero debe poder cambiarse en ciertas circunstancias automáticamente, para ello debe estar en un evento post del itemchanged. Si en ese evento post resulta que no es válido, tiene que regresar el foco al campo, Setcolumn, y una vez allí si el usuario da al tab sin cambiar nada volver a saltar el aviso de no válido. Es un poco lioso, pero es como tiene que funcionar. Por lo que rowfocuschanged no me sirve, pero gracias de todos modos.
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:Gestión del Itemchanged

Publicado por SnakeLogan (32 intervenciones) el 02/09/2003 21:41:19
Creo haberte entendido.

Prueba esto:

Dw.PostEvent( ItemChanged!, 1, 0)

Y En el itemChanged esto:

Integer i_num

i_num = 2
i_num = Message.WordParm
s_nombre_campo = This.GetColumnName()
IF i_num = 1 THEN s_nombre_campo = 'importe'

CHOOSE CASE s_nombre_campo
CASE 'importe'
END CHOOSE

Saludos y Suerte.
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

Gracias, pero no va

Publicado por marianux (20 intervenciones) el 03/09/2003 17:01:01
me da un error en una validación del padre del objeto pq viene con dwo.Name y como no le paso ningúno de esos valores..
Creo que segurmanete no se pueda hacer así. ¿Hay algún método que nos sirva para sustituir el dato insertado o modificado de un campo por otro desde el propio evento itemchanged?.
Un saludo
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:Gracias, pero no va

Publicado por SnakeLogan (32 intervenciones) el 03/09/2003 17:29:24
Sip con SetText().

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

RE:Gestión del Itemchanged

Publicado por dany rojas (1 intervención) el 15/09/2003 20:29:07
hola:
no se si les sirva por lo general para este tipo de funcionalidades uso el itemfocuschanged, validando las columnas, y se conjuga con un triggerevent que lo regrese y valide

espero te sirva

Colombia contigo
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

Utiliza el evento ITEMERROR

Publicado por Milson Cardona (613 intervenciones) el 03/09/2003 21:52:25
Un saludo especial desde COLOMBIA

puedes escribir todo el código que tienes en el ITEMCHANGED en el evento ITEMERROR del DW, este evento se ejecuta siempre que un campo pierde el foco.... se haya o no cambiado el dato que tenía anteriormente, además se ejecuta incluso si el dato fue ingresado por teclado o puesto por código.

si el valor cumple o pasa la validación no hay problema, pero si no pasa la validación el evento no permite que se cambie el foco.... claro si le retornas el valor adecuado

ejemplo

CHOOSE CASE this.getcolumname()
CASE 'columna1'
IF no pasa validación THEN
messagebox('Validación','hay un error en los datos')
RETURN 1
END IF
CASE 'columna2'
IF no pasa validación THEN
messagebox('Validación','hay un error en los datos')
RETURN 1
END IF
END CHOOSE

si no retornas nada o retornas cero (0), por defecto te sacará el mensaje de VALUE NO PASS VALIDATION RULE

espero que te sirva para solucionar el problema.. me cuentas como te fue
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