Detectar el cambio de valor en una variable booleana

J.C.M.Castillo
05 de Enero del 2005
Antes de nada, comentar que no soy ningún experto en esto del VisualBasic. Estoy iniciándome en él principalmente para controlar tarjetas electrónicas de entradas/salidas a través del puerto serie y paralelo del ordenador.
El caso es que quierdo detectar cuando una variable de tipo BOOL cambia de valor. Bien cuando pasa de 0 a 1 (flanco ascendente) o bien cuando lo hace de 1 a 0 (flanco descendente). Me improta poco si el valor es 1 o 0, lo que realmente necesito conocer es cuando se produce el cambio. He estado probando algunas cosas y lo he conseguido utilizando varios Timer, pero la verdad es que no me parece la solución más elegante.
¿Alguien me puede decir de forma secilla como detectar este cambio de valor?

javi
05 de Enero del 2005
La utilizacion de timer es suficientemente elegante, si el codigo que tengas dentro es consistente no tiene por que fallar.

eth0
05 de Enero del 2005
Respuesta corta: convierte esa variable en una propiedad.

Por ejemplo, tenemos un formulario y queremos saber cuándo cambia de valor una variable que llamaremos PapaFrita.

En este caso, lo que haremos será convertir esa variable en una propiedad privada del formulario:

Dim pbPapaFrita As Boolean

Private Property Let PapaFrita(Valor As Boolean)
If Valor Then
' El valor es TRUE
Else
' El valor es FALSE
End If
pbPapaFrita = Valor
End Property

Si necesitas guardar ese valor (como seguramente necesitarás), crea una variable privada para guardar su valor. Si necesitas después consultar el valor de PapaFrita, puedes hacer lo siguiente:

Private Property Get PapaFrita() As Boolean
PapaFrita = pbPapaFrita
End Property

Pero CUIDADO, este truco no funcionará en módulos normales, sólo en módulos de clase y formularios.