** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Tus Funciones Favoritas & Aportaciones & Artí­culos
  Mensajes nuevos Mensajes nuevos RSS - VBA: Formularios. Grupos de Controles
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoVBA: Formularios. Grupos de Controles

 Responder Responder
Autor
Mensaje
genoma111 Ver desplegable
Administrador
Administrador
Avatar

Unido: 28/Marzo/2011
Localización: ...
Estado: Sin conexión
Puntos: 3248
Enlace directo a este mensaje Tema: VBA: Formularios. Grupos de Controles
    Enviado: 20/Agosto/2013 a las 23:09
A veces necesitamos manejar grupos de controles a manera de secciones y asignarle a cada grupo ciertas propiedades según algún parámetro.

En este ejemplo muestro solo como ocultar y volver a mostrar controles agrupados en un rectángulo.

Las funciones son las siguientes:

Oculta controles:

Option Explicit
Function HideCtrls(frmForm As Form, _
                     Box1 As Rectangle, _
                     Box2 As Rectangle, _
                     Box3 As Rectangle, _
                     Box4 As Rectangle)

Dim ctrl As Control

For Each ctrl In frmForm.Controls
   If ctrl.ControlType = acTextBox Or ctrl.ControlType = acComboBox Or ctrl.ControlType = acListBox Then
       If ctrl.Properties("Top") > Box1.Top Then
           If ctrl.Properties("Top") < Box2.Top Then
               If ctrl.Properties("Left") > Box3.Left Then
                   If ctrl.Properties("Left") < Box4.Left Then
                       ctrl.Properties("Visible") = False
                   End If
               End If
           End If
       End If
   End If
Next ctrl
End Function

Muestra controles:

Function ShowCtrls(frmForm As Form, _
                     Box1 As Rectangle, _
                     Box2 As Rectangle, _
                     Box3 As Rectangle, _
                     Box4 As Rectangle)

Dim ctrl As Control

For Each ctrl In frmForm.Controls
   If ctrl.ControlType = acTextBox Or ctrl.ControlType = acComboBox Or ctrl.ControlType = acListBox Then
       If ctrl.Properties("Top") > Box1.Top Then
           If ctrl.Properties("Top") < Box2.Top Then
               If ctrl.Properties("Left") > Box3.Left Then
                   If ctrl.Properties("Left") < Box4.Left Then
                       ctrl.Properties("Visible") = True
                   End If
               End If
           End If
       End If
   End If
Next ctrl
End Function

En el formulario llamo las funciones de la siguiente manera:

Option Compare Database

Private Sub Command1_Click()
ShowCtrls Me, Box1, Box2, Box1, Box4
End Sub

Private Sub Command10_Click()
HideCtrls Me, Box5, Box6, Box5, Box202
End Sub

Private Sub Command11_Click()
ShowCtrls Me, Box6, Box201, Box6, Box202
End Sub

Private Sub Command12_Click()
HideCtrls Me, Box6, Box201, Box6, Box202
End Sub

Private Sub Command2_Click()
HideCtrls Me, Box1, Box2, Box1, Box4
End Sub

Private Sub Command3_Click()
ShowCtrls Me, Box2, Box3, Box2, Box5
End Sub

Private Sub Command4_Click()
HideCtrls Me, Box2, Box3, Box2, Box5
End Sub

Private Sub Command5_Click()
ShowCtrls Me, Box3, Box201, Box3, Box6
End Sub

Private Sub Command6_Click()
HideCtrls Me, Box3, Box201, Box3, Box6
End Sub

Private Sub Command7_Click()
ShowCtrls Me, Box4, Box5, Box4, Box202
End Sub

Private Sub Command8_Click()
HideCtrls Me, Box4, Box5, Box4, Box202
End Sub

Private Sub Command9_Click()
ShowCtrls Me, Box5, Box6, Box5, Box202
End Sub

El ejemplo lo pueden descargar de acá:

Es el denominado Grupos Controles.

Espero les sirva.

Diego



Editado por genoma111 - 21/Agosto/2013 a las 10:19
"To VBA or not to VBA... that's the question" DFP
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable