23 de abril de 2000

En que metodo pongo formatos especiales condicionados

En que metodo pongo formatos especiales condicionados, por ejemplo colores en funcion de su Value.

Trabajando con los textbox puede surgir la necesidad de ponerle un formato especial en función de que su valor (por ejemplo ponerlos en rojo, cuando su valor sea negativo).

Surge la duda de en que metodos poner el codigo para colorearlos, Valid, Refresh, ... ¿se me quedo alguno? ¿Como lo hago todo mas sencillo? ¿Tengo que repetir todo esto es cada texbox?

Bueno, lo primero pensar que deberiamos tener redefinida la clase estandard texbox (o aun mejor todas las clases visuales), y nuestros texbox hacerlos que dependieran de nuestras nuevas clases redefinidas, de tal manera que cuando hagamos un cambio en la clase cs_textbox (mi ejemplo), este se realice en todos los que usemos.

Trabajando con VFP6 + SP3, se podria estar tentado en utilizar el metodo value_assign, que es ejecutado cada vex que el valor de un textbox cambia, pero el metodo assign todavia tiene diversos bugs y problemas, como mas gordo citar que si se pone codigo en un value_assign (a nivel de clase), cualquier textbox de esa clase que usemos nos va a decir que se han realizado cambios en el (GETFLDSTATE), por tanto descartado el assign.

Los metodos a modificar son los siguientes:

  • InteractiveChange - Se modifica el valor con el raton
  • ProgrammaticChange - Se modifica el valor por codigo
  • Refresh - Se actualiza un textbox vinculado a datos (p.ejemplo con un SKIP)

En el ejemplo que estamos tratando, tambien creo un metodo a nivel de la clase texbox, por ejemplo llamado AnyChange y desde los tres metodos anteriores llamo a este AnyChange.

El codigo del AnyChange es:
IF VARTYPE(this.value)="N"
  this.forecolor = IIF(this.value < 0, RGB(255,0,0),0)
  this.disabledforecolor = IIF(this.value < 0,RGB(255,0,0),0)
ENDIF
Es decir si el valor es numerico y negativo lo pone en rojo.

Pablo Roca

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.