PERCORRER OS CONTROLES DO FORM, INDEXADOS E/OU NÃO

 Tópico anterior Próximo tópico Novo tópico

PERCORRER OS CONTROLES DO FORM, INDEXADOS E/OU NÃO

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#482302 - 14/06/2018 03:54:46

ROTTZEUS
BELO HORIZONTE
Cadast. em:Junho/2011


Boa noite pessoal!!!

Pessoal, sou novo neste fórum e gostaria de contar com a experiência de vocês para solucionar um problema. Tenho a necessidade de mudança de um sistema antigo, em que estou com uma dúvida que não consigo achar o caminho. Preciso percorrer todos os controles de um form e automatizar uma rotina para habilitar ou não determinado controle. Contudo, minha dúvida consiste a partir do momento que encontro controles indexados name(i).enabled e controles não indexados name.enabled.

Percorrer o form não é o problema, pois uso o código abaixo
For i = 0 To Me.Controls.Count - 1
If TypeOf Me.Controls(i) Is OptionButton Then
      'Aqui preciso saber se o OptionButton está indexado ou não, pois terei as duas situações e nomes diferentes para fazer uma busca diretamente pelo name do controle
      'Tentei várias formas com IF para identificar se era indexado ou não, Me.Controls(i).Name.item(i).caption, Me.Controls(i).Name.count para identificar se é ou não indexado, Me.Controls(i).Name.index, mas estou apanhando realmente
      ''Me.Controls(i).text = ""
ElseIf TypeOf Me.Controls(i) Is CommandButton Then
      'Aqui faria a mesma checagem com o commandbutton, pois no form há tanto controles indexados, como não indexados.
Else
      'Se não fosse nem um optionbutton, nem um commandbutton não preciso fazer nada
End If
Next

Se alguem puder me dar um help, fico agradecido.

Abraço a todos!!!

rottzeus


#482331 - 17/06/2018 13:03:17

JABA
CABO FRIO
Cadast. em:Agosto/2005


    Dim i As Integer
    
    For i = 0 To Me.Controls.Count - 1
        MsgBox IsControleIndexado(Me.Controls(i)) & " - " & Me.Controls(i).Name
    Next

Public Function IsControleIndexado(controle As Object) As Boolean
    IsControleIndexado = Not controle.Parent.Controls(controle.Name) Is controle
End Function



_______________________________________________________________________________________________

Se a alma ou espírito são imateriais, como eles fazem para se localizarem quando o corpo está em movimento?



#482417 - 21/06/2018 08:32:04

MESTRE
GUARULHOS
Cadast. em:Novembro/2013


Última edição em 21/06/2018 08:33:38 por MESTRE

**Desconsiderar os componentes da DevExpress
Citação:
    
  Dim controle As Control

Public Function Testar_vazio(ByVal tela As Object) As Boolean
        Dim controle As Control
        Dim controle2 As Control
        For Each controle In tela.Controls
            If TypeOf controle Is TextBox Or TypeOf controle Is MaskedTextBox Or TypeOf controle Is DateTimePicker Or TypeOf controle Is CheckBox Or TypeOf controle Is ComboBox Or TypeOf controle Is TableLayoutPanel Or TypeOf controle Is DevExpress.XtraEditors.TextEdit Or TypeOf controle Is DevExpress.XtraEditors.ComboBoxEdit Then
                If controle.Text = "" And controle.Tag <> "x" Then
                    controle.Focus()
                    MessageBox.Show(controle.Name)
                    Return True
                End If

            ElseIf TypeOf controle Is GroupBox Or TypeOf controle Is DevExpress.XtraEditors.GroupControl Or TypeOf controle Is TextBox Or TypeOf controle Is MaskedTextBox Or TypeOf controle Is CheckBox Or TypeOf controle Is ComboBox Or TypeOf controle Is DevExpress.XtraEditors.TextEdit Or TypeOf controle Is DevExpress.XtraEditors.ComboBoxEdit Then
                For Each controle2 In controle.Controls
                    If controle2.Text = "" And controle2.Tag <> "x" Then
                        controle2.Focus()
                        MessageBox.Show(controle2.Name)
                        Return True
                    End If
                Next
            End If
        Next
    End Function



_______________________________________________
"A alegria está na luta, na tentativa, no sofrimento envolvido e não na vitória propriamente dita."
Gandhi.


 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário