|
Enumerar todos os controles de um formulário |
Como posso verificar todos os controles de um formulário e recuperar seus nomes?Autor: Dev Hashish |
|
Use a função a seguir como exemplo. Passe o nome do formulário e acompanhe na janela de depuração!! Nota: Assegure-se de copiar, também, a função fIsLoaded, já que fEnumControls a usa internamente para ter certeza que o formulário a ser tratado está aberto.
'************ Início do Código ***************
' este código foi escrito originalmente por Dev Ashish.
' Ele não deve ser alterado ou distribuído,
' exceto como parte de um aplicativo.
' Use-o livremente em qualquer aplicativo,
' desde que esta nota de copyright permaneça inalterada.
'
' Código cortesia de
' Dev Ashish
'
Function fEnumControls(ByVal strfrmToEnum As String)
' Imprime o tipo e nome do controle
' NÃO enumera os controles internos a um subform
Dim astrCtlName() As String
Dim i As Integer, intCnt As Integer
Dim frm As Form
' Retire os indicadores de comentários nas duas próximas linhas
' para o Access 95
'Const acPage = 124
'Const acTabCtl = 123
' Se o formulário estiver fechado, sai da função
If Not fIsLoaded(strfrmToEnum) Then
MsgBox "Formulário " & strfrmToEnum & " provavelmente está fechado!! " & _
vbCrLf & "Por favor, abra-o e tente novamente.", vbCritical
Exit Function
End If
Set frm = Forms(strfrmToEnum)
'Conta o número de controles
intCnt = frm.Count
'Inicializa a matriz para conter os nomes de controles
ReDim astrCtlName(0 To intCnt - 1, 0 To 1)
For i = 0 To intCnt - 1
astrCtlName(i, 0) = frm(i).Name
'Usa ControlType para determinar o Tipo de controle
Select Case frm(i).ControlType
Case acLabel: astrCtlName(i, 1) = "Rótulo"
Case acRectangle: astrCtlName(i, 1) = "Retângulo"
Case acLine: astrCtlName(i, 1) = "Linha"
Case acImage: astrCtlName(i, 1) = "Imagem"
Case acCommandButton: astrCtlName(i, 1) = "Botão de Comando"
Case acOptionButton: astrCtlName(i, 1) = "Botão de Opção"
Case acCheckBox: astrCtlName(i, 1) = "Check box"
Case acOptionGroup: astrCtlName(i, 1) = "Grupo de Opção"
Case acBoundObjectFrame: astrCtlName(i, 1) = "Moldura de objeto vinculado"
Case acTextBox: astrCtlName(i, 1) = "Caixa de Texto"
Case acListBox: astrCtlName(i, 1) = "Caixa de Listagem"
Case acComboBox: astrCtlName(i, 1) = "Caixa de Combinação"
Case acSubform: astrCtlName(i, 1) = "SubFormulário"
Case acObjectFrame: astrCtlName(i, 1) = "Moldura de objeto desvinculado ou gráfico"
Case acPageBreak: astrCtlName(i, 1) = "Quebra de página"
Case acPage: astrCtlName(i, 1) = "Página"
Case acCustomControl: astrCtlName(i, 1) = "Controle ActiveX"
Case acToggleButton: astrCtlName(i, 1) = "Botão de Opção"
Case acTabCtl: astrCtlName(i, 1) = "Controle Guia"
End Select
Next i
' Imprime a matriz de forma ordenada
Debug.Print "Nome do Controle", "Tipo de Controle"
Debug.Print "----------------", "----------------"
For i = 0 To intCnt - 1
Debug.Print astrCtlName(i, 0), astrCtlName(i, 1)
Next i
Erase astrCtlName
End Function
'************ Final do Código ***************
|