CLASSE VALIDAR CAMPOS
Boa noite,
Gostaria de usar o código abaixo para validar os campos dos meus forms. Só que como eu estou desenvolvendo a minha aplicação em camadas esta dando erro nessa linha:
For Each ctl In campos
Descrição do Erro: [ô]Control[ô] is a type and cannot be used as an expression[ô]
Abaixo segue o código.
Obrigado.
Gostaria de usar o código abaixo para validar os campos dos meus forms. Só que como eu estou desenvolvendo a minha aplicação em camadas esta dando erro nessa linha:
For Each ctl In campos
Descrição do Erro: [ô]Control[ô] is a type and cannot be used as an expression[ô]
Abaixo segue o código.
Imports System.Windows.Forms
Public Class ValidaCampos
Public Function Validar()
Dim ctl As Control
For Each ctl In Control
If TypeOf ctl Is TextBox Then
[ô]TextBox
If ctl.Text = [Ô][Ô] And ctl.Visible = True Then
MsgBox([Ô]Você não preencheu o campo [Ô] & ctl.Name, vbInformation, [Ô]Campo em Branco[Ô])
ctl.SetFocus()
Exit Function
End If
[ô]ComboBox
If ctl.ComboBox = [Ô][Ô] Then
MsgBox([Ô]Você não preencheu o campo [Ô] & ctl.Name, vbInformation, [Ô]Campo em Branco[Ô])
ctl.SetFocus()
Exit Function
End If
End If
Next ctl
End Function
End Class
Obrigado.
no ctl.combobox vc tem que trocar por DirectCast(ctrl, ComboBox).Text = [Ô][Ô] para pegar a propriedade text do combo...
Boa noite,
Mas o erro ocorre na linha
Obrigado.
Mas o erro ocorre na linha
For Each ctl In campos
Obrigado.
vamos la veja assim !
chame ele passando o form Validar(me)... Abraços !
Private Sub Validar(ByVal Page As Control)
[ô]loop pelos controles
For Each ctrl As Control In Page.Controls
[ô]captura se o campo é textbox
If TypeOf ctrl Is TextBox Then
With CType(ctrl, TextBox)
If .Visible AndAlso .Text = String.Empty Then
MessageBox.Show([Ô]Você não preencheu o campo [Ô] & .Name, [Ô]Campo em Branco[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
.Focus()
Exit Sub
End If
End With
ElseIf TypeOf ctrl Is ComboBox Then
With CType(ctrl, ComboBox)
If .Visible AndAlso .SelectedIndex < 0 Then
MessageBox.Show([Ô]Você não preencheu o campo [Ô] & .Name, [Ô]Campo em Branco[Ô], MessageBoxButtons.OK, MessageBoxIcon.Error)
.Focus()
Exit Sub
End If
End With
Else
[ô]Captura se o campo é do tipo container, isso é se possui controles dentro e chama a sub novamente !
If ctrl.Controls.Count > 0 Then
Validar(ctrl)
End If
End If
Next
End Sub
chame ele passando o form Validar(me)... Abraços !
Ah e pra nao ficar esse monte de Messagebox na rotina/função, voce pode criar um sub para emitir essas Messagebox..
Abraços
Abraços
cara, eu acho que seu problema está na declaração da variável
Apague esta linha e declare a variável diretamente no [txt-color=#0000f0]For[/txt-color]
Exemplo: Fazendo loop nos controles [txt-color=#0000f0]TexBox[/txt-color] de um Form1
Agora em
Porque o For..Each vai procurar controles dentro de um conteiner, por exemplo um Form, Um Panel, um GroupBox
Verifique qual é a lógica que seu programa vai seguir, ok?
Qualquer coisa posta aÃ
Dim ctl As Control
Apague esta linha e declare a variável diretamente no [txt-color=#0000f0]For[/txt-color]
For Each ctl As Control In Control
Exemplo: Fazendo loop nos controles [txt-color=#0000f0]TexBox[/txt-color] de um Form1
[txt-color=#0000f0]For Each[/txt-color] Caixa [txt-color=#0000f0]As[/txt-color] TextBox [txt-color=#0000f0]In Me[/txt-color].Controls.OfType([txt-color=#0000f0]Of[/txt-color] TextBox)()
Msgbox(Caixa.Text)
[txt-color=#0000f0]Next[/txt-color]
Agora em
For Each ctl In Control
Control é o nome de sua camada?Porque o For..Each vai procurar controles dentro de um conteiner, por exemplo um Form, Um Panel, um GroupBox
Verifique qual é a lógica que seu programa vai seguir, ok?
Qualquer coisa posta aÃ
Boa tarde,
O nome da minha camada é Configuracoes.
Obrigado.
O nome da minha camada é Configuracoes.
Obrigado.
Testou o codigo que passei ?
Boa tarde,
Ainda não consegui, estou com problemas para chamar a classe, abaixo segue as duas formas que estou utilizando e cada uma com seu erro:
Private ValidaCampos As New Configuracoes.ValidaCampos
ValidaCampos.Validar(frmContasPagar) - Erro abaixo
[ô]Silva_Informática.frmContasPagar[ô] cannot refer to itself through its default instance; use [ô]Me[ô] instead. C:\Documents and Settings\Dylla\Desktop\Sistema\Sistema\Silva Informática\Silva Informática\formularios\Cadastros\frmContasPagar.vb 99 30 Silva Informática
ValidaCampos.Validar(me.frmContasPagar) - Erro abaixo
[ô]frmContasPagar[ô] is not a member of [ô]Silva_Informática.frmContasPagar[ô]. C:\Documents and Settings\Dylla\Desktop\Sistema\Sistema\Silva Informática\Silva Informática\formularios\Cadastros\frmContasPagar.vb 99 30 Silva Informática
Obrigado
Ainda não consegui, estou com problemas para chamar a classe, abaixo segue as duas formas que estou utilizando e cada uma com seu erro:
Private ValidaCampos As New Configuracoes.ValidaCampos
ValidaCampos.Validar(frmContasPagar) - Erro abaixo
[ô]Silva_Informática.frmContasPagar[ô] cannot refer to itself through its default instance; use [ô]Me[ô] instead. C:\Documents and Settings\Dylla\Desktop\Sistema\Sistema\Silva Informática\Silva Informática\formularios\Cadastros\frmContasPagar.vb 99 30 Silva Informática
ValidaCampos.Validar(me.frmContasPagar) - Erro abaixo
[ô]frmContasPagar[ô] is not a member of [ô]Silva_Informática.frmContasPagar[ô]. C:\Documents and Settings\Dylla\Desktop\Sistema\Sistema\Silva Informática\Silva Informática\formularios\Cadastros\frmContasPagar.vb 99 30 Silva Informática
Obrigado
Voce esta passando o nome do Formulario direto, o formulario em si tambem é uma classe e deve ser instanciado antes de chama-lo.
Dim MeuForm as form = new frmContasPagar
MeuForm.show()
ValidaCampos.Validar(MeuForm)
Abraços
Dim MeuForm as form = new frmContasPagar
MeuForm.show()
ValidaCampos.Validar(MeuForm)
Abraços
Boa noite,
Bom agora funciona por partes, por exemplo coloquei esse código no botão que vai verificar se tudo esta preenchido antes de gravar no bando de dados, o problema é que ele faz é abrir um novo form e ele faz a verificação no novo form que é aberto e não no que realmente estou fazendo os lançamentos.
Obrigado.
Bom agora funciona por partes, por exemplo coloquei esse código no botão que vai verificar se tudo esta preenchido antes de gravar no bando de dados, o problema é que ele faz é abrir um novo form e ele faz a verificação no novo form que é aberto e não no que realmente estou fazendo os lançamentos.
Obrigado.
Tópico encerrado , respostas não são mais permitidas