REFORMULAR CAMPO [ô]TEXT[ô]
Estou querendo diminuir meu código para validar [ô]campos vazios[ô] nas telas pois tenho alguns formulários que tem mais de 25 campos text em cada um, enfim... tenho para cada campo a validação abaixo:
Private Sub RotinaSalvar()
If Trim(txtNome.text) = [Ô][Ô] Then
MensagemDoSistema [Ô]Campo [ô]Nome[ô] não foi informado, verifique antes de salvar![Ô]
txtNome.SetFocus
Exit Sub
End If
End Sub
Pensei em fazer igual abaixo, porém quero que o [ô]SetFocus[ô] caso algum destes campos abaixo esteja em branco, ele retorne o foco para somente o campo que não foi preenchido:
Private Sub RotinaSalvar()
If txtNome.text = [Ô][Ô] or txtMatricula.text = [Ô][Ô] or txtNascimento.text = [Ô][Ô] or txtCpf.text = [Ô][Ô] or txtRg.text = [Ô][Ô] or txtEndereco.text = [Ô][Ô] or txtNumeroCasa.text = [Ô][Ô] or txtBairro.text = [Ô][Ô] or txtCidade.text = [Ô][Ô] or txtCep.text = [Ô][Ô] or txtBancoNumero.text = [Ô][Ô] or txtBancoNome.text = [Ô][Ô] or txtAgencia.text = [Ô][Ô] or txtContaCorrente.text = [Ô][Ô] or txtPisPasep.text = [Ô][Ô] or txtCtpsNumero.text = [Ô][Ô] or txtCtpsSerie.text = [Ô][Ô] or txtTituloEleitorNumero.text = [Ô][Ô] or txtTituloEleitorZona.text = [Ô][Ô] or txtTituloEleitorSecao.text = [Ô][Ô] or txtCnhNumero.text = [Ô][Ô] or txtNomeMae.text = [Ô][Ô] or txtNomePai.text = [Ô][Ô] or txtTelefoneResidencial.text = [Ô][Ô] or txtTelefoneCelular.text = [Ô][Ô] or txtDataAdmissao.text = [Ô][Ô] or txtSalario.text = [Ô][Ô] Then
[ô]Aqui vai o comando do SetFocus que quero adicionar mas não sei como[ô]
Exit Sub
End If
Como posso fazer isso?
Private Sub RotinaSalvar()
If Trim(txtNome.text) = [Ô][Ô] Then
MensagemDoSistema [Ô]Campo [ô]Nome[ô] não foi informado, verifique antes de salvar![Ô]
txtNome.SetFocus
Exit Sub
End If
End Sub
Pensei em fazer igual abaixo, porém quero que o [ô]SetFocus[ô] caso algum destes campos abaixo esteja em branco, ele retorne o foco para somente o campo que não foi preenchido:
Private Sub RotinaSalvar()
If txtNome.text = [Ô][Ô] or txtMatricula.text = [Ô][Ô] or txtNascimento.text = [Ô][Ô] or txtCpf.text = [Ô][Ô] or txtRg.text = [Ô][Ô] or txtEndereco.text = [Ô][Ô] or txtNumeroCasa.text = [Ô][Ô] or txtBairro.text = [Ô][Ô] or txtCidade.text = [Ô][Ô] or txtCep.text = [Ô][Ô] or txtBancoNumero.text = [Ô][Ô] or txtBancoNome.text = [Ô][Ô] or txtAgencia.text = [Ô][Ô] or txtContaCorrente.text = [Ô][Ô] or txtPisPasep.text = [Ô][Ô] or txtCtpsNumero.text = [Ô][Ô] or txtCtpsSerie.text = [Ô][Ô] or txtTituloEleitorNumero.text = [Ô][Ô] or txtTituloEleitorZona.text = [Ô][Ô] or txtTituloEleitorSecao.text = [Ô][Ô] or txtCnhNumero.text = [Ô][Ô] or txtNomeMae.text = [Ô][Ô] or txtNomePai.text = [Ô][Ô] or txtTelefoneResidencial.text = [Ô][Ô] or txtTelefoneCelular.text = [Ô][Ô] or txtDataAdmissao.text = [Ô][Ô] or txtSalario.text = [Ô][Ô] Then
[ô]Aqui vai o comando do SetFocus que quero adicionar mas não sei como[ô]
Exit Sub
End If
Como posso fazer isso?
Cara faz um bom tempo! mas se não me engano a função para isso era mais ou menos assim:
Bem acho que era assim! se não era tá quase lá! rsrsrsrs
Té Mais
Dim controle As Control
Dim i As Integer
For i = 0 To Form1.Controls.Count – 1
Set controle = Form1.Controls(i)
If TypeOf controle Is TextBox Then
If Trim(controle) = [Ô][Ô] Then
MensagemDoSistema [Ô]Campo não informado, verifique antes de salvar![Ô]
controle.SetFocus
Exit Sub
End If
End If
Next i
Bem acho que era assim! se não era tá quase lá! rsrsrsrs
Té Mais
Segue:
Para não considerar o controle ou seja se puder ser nulo o textbox voce coloca a propriedade Tag com um [Ô]x[Ô]
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 Then
If controle.Text = [Ô][Ô] And controle.Tag <> [Ô]x[Ô] Then
controle.Focus()
MessageBox.Show(controle.Name)
Return True
End If
Next
End Function
Para não considerar o controle ou seja se puder ser nulo o textbox voce coloca a propriedade Tag com um [Ô]x[Ô]
E pra quem mais estiver interessado, o equivalente para a plataforma .Net
C#
VB.Net
C#
foreach(Control controle in this.Controls)
{
if(controle is TextBox)
{
if(controle.Text == string.Empty)
{
MessageBox.Show([Ô]Preencha todos os campos.[Ô]);
controle.Focus();
break;
}
}
}
VB.Net
Dim controle As Control
For Each controle In Me.Controls
If TypeOf controle Is TextBox Then
If controle.Text = String.Empty Then
MessageBox.Show([Ô]Preencha todos os campos.[Ô])
controle.Focus()
Exit For
End If
End If
Next
Saudação ACCIOLLY vlw pela dica, irei testar.
Ok MESTRE, fiz conforme pediu e olha o erro que aparece:
Vc pode fazer assim
Private Sub RotinaSalvar()
For Each C As TextBox In New TextBox() {txtNome, txtMatricula, txtNascimento, txtCpf, txtRg, txtEndereco, txtNumeroCasa, txtBairro, txtCidade, txtCep, txtBancoNumero, txtBancoNome, txtAgencia, txtContaCorrente, txtPisPasep, txtCtpsNumero, txtCtpsSerie, txtTituloEleitorNumero, txtTituloEleitorZona, txtTituloEleitorSecao, txtCnhNumero, txtNomeMae, txtNomePai, txtTelefoneResidencial, txtTelefoneCelular, txtDataAdmissao, txtSalario}
If C.Text = [Ô][Ô] Then
C.Focus()
Exit Sub
End If
Next
End Sub
no conjunto entre {} vc informa a lista de componentes que quer testar
Private Sub RotinaSalvar()
For Each C As TextBox In New TextBox() {txtNome, txtMatricula, txtNascimento, txtCpf, txtRg, txtEndereco, txtNumeroCasa, txtBairro, txtCidade, txtCep, txtBancoNumero, txtBancoNome, txtAgencia, txtContaCorrente, txtPisPasep, txtCtpsNumero, txtCtpsSerie, txtTituloEleitorNumero, txtTituloEleitorZona, txtTituloEleitorSecao, txtCnhNumero, txtNomeMae, txtNomePai, txtTelefoneResidencial, txtTelefoneCelular, txtDataAdmissao, txtSalario}
If C.Text = [Ô][Ô] Then
C.Focus()
Exit Sub
End If
Next
End Sub
no conjunto entre {} vc informa a lista de componentes que quer testar
O Exemplo do Mestre achei um pouco diferente e mais próximo do desejado.
Porém deve ser modificado para Vb6.
Por isto está acontecendo o erro.
Porém deve ser modificado para Vb6.
Por isto está acontecendo o erro.
Concordo como o OMAR, o exemplo do MESTRE é bem bacana e pode ser colocado como um método de extensão e por isso estará disponÃvel para todo e qualquer textbox em qualquer form de qualquer parte do sistema.
Obrigado galera pelo elogio, em .NET tenho uma classe (clsControle) mesmo sendo WinForms que auxilia e muito para não perder tempo com besteiras, esse exemplo é aplicável a uma série de outras ações etc, algumas delas:
- Testar Vazio.
- Limpar tela.
- Habilitar tela.
- Desabilitar tela.
Tudo isso em 4 linhas, eu testo vazio, habilito, limpo a tela e desabilito se eu quiser e hoje não preciso testar campo a campo, dar enabled true ou false em campo a campo, sem sofrimento algum e como disse você deve prestar atenção a propriedade .Tag pois não me recordo se a mesma existe em Vb6, pode ser um pouco trabalhoso acertar más depois disso você nunca vai fazer mais um If txt1.text = [Ô][Ô] and txt2.text = [Ô][Ô] and txt3.text = [Ô][Ô] ...... más a propriedade .Tag <> [Ô]x[Ô] que vai dizer os campos que deverão ser ignorados..
Se não me engano como passaram no Vb6 é SetFocus e não Focus, to meio enferrujado pra Vb6 tente tirar o Focus.. Como eu utilizo? la no botão faço assim:
- Testar Vazio.
- Limpar tela.
- Habilitar tela.
- Desabilitar tela.
Tudo isso em 4 linhas, eu testo vazio, habilito, limpo a tela e desabilito se eu quiser e hoje não preciso testar campo a campo, dar enabled true ou false em campo a campo, sem sofrimento algum e como disse você deve prestar atenção a propriedade .Tag pois não me recordo se a mesma existe em Vb6, pode ser um pouco trabalhoso acertar más depois disso você nunca vai fazer mais um If txt1.text = [Ô][Ô] and txt2.text = [Ô][Ô] and txt3.text = [Ô][Ô] ...... más a propriedade .Tag <> [Ô]x[Ô] que vai dizer os campos que deverão ser ignorados..
Se não me engano como passaram no Vb6 é SetFocus e não Focus, to meio enferrujado pra Vb6 tente tirar o Focus.. Como eu utilizo? la no botão faço assim:
Dim controle as new clsControle
Botão Gravar por ex:
If controle.Testar_vazio(Me) = True Then
MessageBox.Show([Ô]Preencha os campos obrigatórios[Ô])
Else
[ô]INSERE!
End If
Certo PLUGSOFTSM, OMAR, e KERPLUNK... Obrigado
PLUGSOFTSM o que faz a variável [ô]As[ô]? Pois olha o erro que ocorre,
PLUGSOFTSM o que faz a variável [ô]As[ô]? Pois olha o erro que ocorre,
Tópico encerrado , respostas não são mais permitidas