Autor Tema: Obtener lista de controles seleccionados  (Leído 2455 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 221
Obtener lista de controles seleccionados
« en: Octubre 19, 2021, 12:06:16 pm »
Palabras clave: diseño, controles, selección, lista
Autor: Visto a ADezii en BYTES.COM

Objetivo:
Mihura pregunta si es posible obtener la lista de controles seleccionados en un formulario en vista diseño. ¿El motivo? la vagancia de escribir los nombres de los controles.

Respuesta
Una búsqueda en Google nos posiciona a Chema y un servidor en la misma página. Ahí descubrimos la propiedad InSelection y un código para determinar si está seleccionado.

Código: [Seleccionar]
? IsControlSelected (Forms!Customers, "CompanyName")
 
Function IsControlSelected(frm As Form, strControlName As String) As Boolean
 Dim intI As Integer, ctl As Control
 If frm.CurrentView <> 0 Then
   ' Form is not in Design view.
   Exit Function
 Else
   For intI = 0 To frm.Count - 1
     Set ctl = frm(intI)
     If ctl.InSelection = True Then
       ' Is desired control selected?
       If UCase(ctl.Name) = UCase(strControlName) Then
         IsControlSelected = True
         Exit Function
       End If
     Else
       IsControlSelected = False
     End If
   Next intI
 End If
End Function

Al final la cosa es más simplificable, tal como nos enseña Mihura.

Código: [Seleccionar]
Function ControlesSeleccionados(frm As Form) As String
    Dim strTmp As String
    Dim ctl As Control
   
    For Each ctl In frm.Controls
        If ctl.InSelection Then
            strTmp = strTmp & ", " & Chr(34) & ctl.Name & Chr(34)
        End If
    Next ctl
    ControlesSeleccionados = Trim(Mid(strTmp, 2))
End Function
« Última modificación: Octubre 19, 2021, 12:16:13 pm por xavi »