Bloqueo

Hola raul, como puedo hacer para que después de introducir datos en un control, éste se bloquee y no pueda ser modificado; como puedo volver a desbloquearlo. Gracias

1 respuesta

Respuesta
1
Puedes usar la propiedad Enabled y jugar con sus dos estados Si/No (False/True), por ejemplo:
Un form que en el evento Al Salir de MiCampo establezca la propiedad Activado (Enable) a False de otro campo, seria algo así:
if is null(MiCampo) then
MiOtroCampo.Enabled=False
end if
Puedes bloquear varios controles por el mismo sistema usando el Current de cada registro, p.e.:
Private Sub Form_Current()
' Si el pedido no tiene un cliente, no permitir al usuario modificar los
' controles de información del cliente.
On Error Resume Next
Const conBorrar = 0
' Desactivar y bloquear el control IdCliente.
' Mostrar el control IdCliente con el mismo fondo que su sección
' y sin borde, para que no se vea como un control modificable.
IDCliente.Enabled = True
IDCliente.Locked = True
IDCliente.BorderStyle = conBorrar
' Si el pedido no tiene asignado un cliente, desactivar los controles del cliente.
' El usuario debe seleccionar un cliente antes de modificar la información del cliente.
If Not IsNull(IDCliente) Then
On Error Resume Next
IDCliente.Enabled = False
IDCliente.Locked = False
MostrarProductos.Enabled = False
Dirección.Enabled = False
...
FechaPedido.Enabled = False
Me![Subformulario Pedidos].Enabled = False
Me![SubformularioPedidos].Locked = True
' Si el pedido tiene un cliente asignado, activar los controles del cliente.
Else
IDCliente.Enabled = True
IDCliente.Locked = True
MostrarProductos.Enabled = True
...
Y así podríamos seguir el razonamiento para este formulario Pedidos.
NOTA: si lo que quieres es bloquear un registro entero tendrás que ir al AllowEditions.
Un cordial slaudo
Raul
No se si te habrá llegado una aclaración mía, pero es que al introducir el código, me da error de sintaxis en la linea:
if is null(MiCampo) then,
Obviamente después de haber cambiado el nombre del campo. Gracias
Ejemplo de la función EsNulo (IsNull)
El siguiente ejemplo utiliza la función EsNulo (IsNull) para determinar si el valor de un control es Nulo (Null). Si lo es, un mensaje solicita al usuario que introduzca datos. Si el valor no es Nulo (Null), un mensaje presenta el valor del control.
Sub ValorControl(ctlTexto As Control)
Dim strMensaje As String
' Comprobar que el control es un cuadro de texto.
If ctlTexto.ControlType = acTextBox Then
' Si el valor del control es Nulo, pedir datos.
If IsNull(ctlText.Value) Then
strMensaje = "No hay datos en el campo '" & ctlTexto.Name _
& "'." & vbCrLf & "Escriba ahora los datos " _
& "para el campo."
If MsgBox(strMensaje, vbQuestion) = vbOK Then
Exit Sub
End If
' Si el valor no es Nulo, presentar el valor.
Else
MsgBox (ctlTexto.Value)
End If
End If
End Sub
Quizá en el primer ejemplo escribí mal, pero esto es de la ayuda de access.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas