Imprimir página | Cerrar ventana

VBA: Formularios. Grupos de Controles

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Tus Funciones Favoritas & Aportaciones & Artí­culos
Descripción del foro: Para publicar código interesante, aportaciones y artículos
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=77382
Fecha de impresión: 08/Abril/2020 a las 04:57


Tema: VBA: Formularios. Grupos de Controles
Publicado por: genoma111
Asunto: VBA: Formularios. Grupos de Controles
Fecha de publicación: 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 http://skydrive.live.com/?cid=1556e9ff55ad8322#cid=1556E9FF55AD8322&id=1556E9FF55AD8322!105" rel="nofollow - acá :

Es el denominado Grupos Controles.

Espero les sirva.

Diego



-------------
"To VBA or not to VBA... that's the question" DFP



Imprimir página | Cerrar ventana