Botones de comando

Agradezco mucho tu ayuda en la apertura de archivos pdf, ahora me surgió otra duda, como hago para que un botón de comando se visualice o active, dependiendo si un cuadro de texto contiene algo, si esta vacío que se oculte

1 respuesta

Respuesta
1
Perdón por la demora en la respuesta, pero es que estaba de vacaciones unos días...
Puedes habilitar/deshabilitar el botón en el evento Al activar registro, dónde evalúas el contenido del cuadro de texto:
If Trim(Nz(Me!elcuadrodetexto, "")) <> "" Then
  Me!elboton.Enabled = True
 Else
  Me!elboton.Enabled = False
End If
Puedes hacer lo mismo en una sola línea:
Me!elboton.Enabled = IIf(Trim(Nz(Me!elcuadrodetexto, "")) <> "", True, False)
Y esta sintaxis tambien deberia funcionar:
Me!elboton.Enabled =CBool(Trim(Nz(Me!elcuadrodetexto, "")) <> "")
Ese código también debería utilizarse en el evento AfterUpdate del cuadro de tetxo de forma que, cuando editas un registro y cambias el valor del cuadro de texto, el botón se active o desactive a conveniencia.
Truco: cuando un código se puede repetir exactamente igual en varios eventos, lo que yo hago es crear una función y llamarla desde todos los eventos necesarios. Ello tiene la ventaja de que, cualquier modificación, sólo debe realizarse en un único sitio.
http://www.mvp-access.com/foro
Hola buen día, muchas gracias por tu respuesta ya la probé y funciona correctamente, pero me surge una duda, tu me comentas de crear una función, como se crea por que no poseo ni la ma minina idea
En el mismo modulo puedes crear una función:
Private Function HabilitaDeshabilita(blnHabilitar As Boolean)
  Me!elBoton.Enabled = blnHabilitar
End Function
Imaginemos ahora que, el único código que quieres implementar a un evento AfterUpdate de un control del mismo formulario sea precisamente eso: habilitar/deshabilitar otro control en función del valor del cuadro de texto. En el evento AfterUpdate:
HabilitaDeshabilita Iif(Me!elcuadrodetexto ="", False, True)
Incluso esro podría funcionar:
HabilitaDeshabilita (me! Elcuadrodetexto<>"")
Esa ultima sintaxis hace una evaluación:
Cuando elcuadrodetexto es distinto de "" esa 'igualdad' (o desigualdad en ese caso) es verdadera, por lo que la igualdad toma el valor True... que es el que le pasas a la función. Si no se cumple la 'igualdad' (es "") devuelve False.
A lo mejor te preguntas las ventajas de utilizar la función en lugar de escribir el código en cada uno de los eventos, máxime cuando la función contiene una sola línea... igual que su llamada.
Pues ya te lo había comentado: si mañana necesitas añadir una segunda acción que deba realizarse, solo debes realizar los cambios en un único sitio. Imaginemos que, en tu caso, debes habilitar un botón y, simultáneamente, deshabilitar otro (o a la inversa, dependerá del valor del argumento que le pases.
Pues seria tan simple como añadir una segunda línea de código a la función
Me!otroboton.Enabled = Not Me!elboton.Enabled
Ese código da el valor a la propiedad Enabled del control otroboton justamente al contrario del que hayas asignado al primero.
A lo mejor me extiendo demasiado en otras cosas, pero son truquillos interesantes de saber.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas