KARLITOS EXPONE UNAS FUNCIONES PARA BLOQUEAR Y DESBLOQUEAR CONTROLES DE UN FROM
Te copio un par de funciones que tengo implementadas, para bloquear /
desbloquear controles de un formulario.
Pegalo tal cual en un módulo, y luego haz la llamada a las funciones desde
el evento click de el botón que quieras.
Por ejemplo:
Private Sub Boton1_Click()
if me.Boton1.Caption = "Bloquear" Then
BloquearControles Me, 0, acTextBox, acComboBox
me.Boton1.Caption = "Desbloquear"
else
DesBloquearControles Me, 0, acTextBox, acComboBox
me.Boton1.Caption = "Bloquear"
endif
End Sub
De esta manera, con un solo boton puedes Bloquear y Desbloquear.
Lo que tienes que pegar en el módulo es:
'-------------------------------------------------------------------
'== Carlos Angulo, 2002 ==
'== Ca.Angulo@eresmas.net ==
'===========================
'
'Funciones para bloquear/Desbloquear los controles de un formulario
'selectivamente, según el tipo de control
'Ha de pasarse como parámetro el formulario sobre el que se desea
bloquear/desbloquear
'Por ejemplo:
'BloquearControles Me, 0, AcTextBox
'Bloqueará todos los controles de tipo "Cuadro de texto" del formulario
desde el que se llame
'En el Array de parámetros, han de pasarse los tipos de controles que se
desea bloquear
'(separados por comas)
'El primer parámetro FLAGS(0) corresponde al backColor que se desea asignar
al control
'Si Flags(0) = 0 no se cambiará el backColor
'
'Flags(i) puede tomar los valores de las constantes intrinsecas de access:
'acBoundObjectFrame - Marco de objeto dependiente
'acCheckBox - Casilla de verificación
'acComboBox - Cuadro combinado
'acCommandButton - Botón de comando
'acCustomControl - Control ActiveX (personalizado)
'acImage - Imagen
'acLabel - Etiqueta
'acLine - Línea
'acListBox - Cuadro de lista
'acObjectFrame - Marco de objeto independiente o gráfico
'acOptionButton - Botón de opción
'acOptionGroup - Grupo de opciones
'acPage - Página(Page)
'acPageBreak - Salto de página
'acRectangle - Rectángulo
'acSubform - Subformulario / subinforme
'acTabCtl - Ficha
'acTextBox - Cuadro de texto
'acToggleButton - Botón de alternar
Public Sub BloquearControles(FRM As Form, ParamArray FLAGS() As Variant)
Dim C As Control
Dim P As Property
Dim S As String
On Error GoTo EH
S = ""
For Each C In FRM.Controls
Dim intI As Integer
For intI = 1 To UBound(FLAGS())
If FLAGS(intI) = C.Properties("ControlType") Then
Select Case C.Properties("ControlType")
Case 100, 101 ' Etiquetas , Cuadros
If FLAGS(0) > 0 Then C.Properties("BackColor") =FLAGS(0)
Case 109, 111 ' TextBox , ComboBox
C.Properties("Locked") = True
C.Properties("Enabled") = False
If FLAGS(0) > 0 Then C.Properties("BackColor") =FLAGS(0)
S = S & C.Name & " (Locked) " & vbCrLf
Case 104 'Botón de Comando
C.Properties("Enabled") = False
Case 106 'CheckBox
C.Properties("Locked") = True
C.Properties("Enabled") = False
S = S & C.Name & " (Locked) " & vbCrLf
Case 123 'TabCtl
C.Properties("Enabled") = False
S = S & C.Name & " (Locked) " & vbCrLf
Case Else
MsgBox C.Name & " [Controltype] = " & C.Properties("Controltype")
End Select
End If
Next intI
Next C
'MsgBox "CONTROLES BLOQUEADOS: " & vbCrLf & S
fin:
Exit Sub
EH:
Select Case Err.Number
Case 2185, 2187
Resume Next
Case Else
MsgBox Err.Number & ": " & Err.Description
Resume fin
End Select
End Sub
'En el Array de parámetros, han de pasarse los tipos de controles que se
desea desbloquear
'El primer parámetro FLAGS(0) corresponde al backColor que se desea asignar
al control
'La función también establece enabled = true
Public Sub DesbloquearControles(FRM As Form, ParamArray FLAGS() As Variant)
Dim C As Control
Dim P As Property
Dim S As String
On Error GoTo EH
S = ""
For Each C In FRM.Controls
Dim intI As Integer
For intI = 1 To UBound(FLAGS())
If FLAGS(intI) = C.Properties("ControlType") Then
Select Case C.Properties("ControlType")
Case 100, 101 ' Etiquetas , Cuadros
If FLAGS(0) > 0 Then C.Properties("BackColor") =FLAGS(0)
Case 109, 111 ' TextBox , ComboBox
C.Properties("Locked") = False
C.Properties("Enabled") = True
If FLAGS(0) > 0 Then C.Properties("BackColor") =FLAGS(0)
S = S & C.Name & " (UnLocked) " & vbCrLf
Case 104 'Botón de Comando
C.Properties("Enabled") = True
Case 106 'CheckBox
C.Properties("Locked") = False
C.Properties("Enabled") = True
S = S & C.Name & " (UnLocked) " & vbCrLf
Case 123 'TabCtl
C.Properties("Enabled") = True
S = S & C.Name & " (UnLocked) " & vbCrLf
Case Else
MsgBox C.Name & "[Controltype] = " & C.Properties("Controltype")
End Select
End If
Next intI
Next C
'MsgBox "CONTROLES DESBLOQUEADOS: " & vbCrLf & S
fin:
Exit Sub
EH:
Select Case Err.Number
Case 2185, 2187
Resume Next
Case Else
MsgBox Err.Number & ": " & Err.Description
Resume fin
End Select
End Sub
-------------------------------------------------------------------
Saludos.
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)