FUN?ÃO TESTA VAZIO NÃO FUNCIONA!

MESTRE 14/10/2014 09:54:24
#441906
Gente estou fazendo um Testa vazio mais não está funcionando..

Tenho uma Classe chamada clsControle onde tenho a função abaixo:
   Public Function Testar_vazio(ByVal tela As Object) As Boolean

Dim controle As Control
For Each controle In tela.controls
If TypeOf controle Is TextBox Then
If controle.Text = [Ô][Ô] And controle.Tag <> [Ô]x[Ô] Then
controle.Focus()
Return True
End If
End If
Next

End Function


Na minha Public Class do Form tenho:
 Dim Controle as New clsControle   


No meu button:
      If controle.Testar_vazio(Me) = True Then
MessageBox.Show([Ô]Preencha os campos o obrigatórios[Ô])
Else
MessageBox.Show([Ô]Todos Foram preenchidos[Ô])
End If


Obs: coloquei em todos os textbox o valor [Ô]x[Ô] na propriedade Tag más não está funcionando ele aparece que todos os campos foram preenchidos mesmo deixando inúmeros campos em branco.. Estou utilizando o Visual Studio 2012 Ultimate e Vb.net

Alguém poderia me auxiliar?

o problema acho que está do For Each ele ja passa pro End If e nem rola na rotina
MESTRE 14/10/2014 10:39:08
#441907
GENTE descobri o problema eu utilizo os componentes DevExpress.. e meus textbox estavam dentro do GroupBox da DevExpress
se eu crio um textbox fora do groupbox da Dev ele funciona a rotina..

e agora como acerto pra ele funcionar dentro do groupbox da Dev?
GUIMORAES 14/10/2014 11:16:07
#441910
Nesta situação os controles pertencem ao gruopbox, você deve percorrer os controles do groupbox e não do formulário.
F001E 14/10/2014 11:43:00
#441915
If TypeOf controle Is TextBox Then

DevExpress não é TextBox e sim TextEdit alterar para If TypeOf controle Is TextEdit Then
MESTRE 14/10/2014 11:57:19
#441916
  If TypeOf controle Is TextBox Then

DevExpress não é TextBox e sim TextEdit alterar para If TypeOf controle Is TextEdit Then

Não estou usando o textbox do Dev e sim o default do VS..

  Nesta situação os controles pertencem ao gruopbox, você deve percorrer os controles do groupbox e não do formulário.  


Tentei de varias formas..


[c]
Dim controle 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 GroupBox Or TypeOf controle Is DevExpress.XtraEditors.GroupControl Then
If controle.Text = [Ô][Ô] And controle.Tag <> [Ô]x[Ô] Then
controle.Focus()
Return True
End If
End If
Next
NICKOSOFT 14/10/2014 17:00:43
#441922
  
If controle.Testar_vazio(Me) = True Then
MessageBox.Show([Ô]Preencha os campos o obrigatórios[Ô])
Else
MessageBox.Show([Ô]Todos Foram preenchidos[Ô])
End If

ali vc esta passando o form como objeto, experimente passar o nome do group
JONATHANSTECKER 14/10/2014 17:17:35
#441923
Resposta escolhida
Boa tarde,

O erro está ocorrendo porque você precisa efetuar um novo loop dentro dos GroupBox... O código deve ficar mais ou menos assim:

    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 Then
If controle.Text = [Ô][Ô] And controle.Tag <> [Ô]x[Ô] Then
controle.Focus()
Return True
End If
ElseIf TypeOf controle Is GroupBox Or TypeOf controle Is DevExpress.XtraEditors.GroupControl Then
For Each controle2 In controle.Controls
If controle2.Text = [Ô][Ô] And controle2.Tag <> [Ô]x[Ô] Then
controle2.Focus()
Return True
End If
Next
End If
Next
End Function


Faz um teste ai, pois não estou com o DevExpress aqui para testar.
MESTRE 15/10/2014 13:34:55
#441937
  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 Then
If controle.Text = [Ô][Ô] And controle.Tag <> [Ô]x[Ô] Then
controle.Focus()
Return True
End If
ElseIf TypeOf controle Is GroupBox Or TypeOf controle Is DevExpress.XtraEditors.GroupControl Then
For Each controle2 In controle.Controls
If controle2.Text = [Ô][Ô] And controle2.Tag <> [Ô]x[Ô] Then
controle2.Focus()
Return True
End If
Next
End If
Next
End Function


Muito Obrigado JONATHANS DEU MUITO CERTO!!!!

VLWWWW MUITO OBRIGADO
Tópico encerrado , respostas não são mais permitidas