REFORMULAR CAMPO [ô]TEXT[ô]

MILTONSILVA94 18/03/2016 08:39:56
#459416
Bom dia ACCIOLLY, irei retomar as sugestões dadas agora. Retorno dizendo se deu certo.
PERCIFILHO 18/03/2016 09:03:32
#459417
Só para registrar a minha ideia. Fiz assim e funcionou direitinho. Aproveitando a idéia do Mestre e usando o Array.Reverse que o Acciolly citou:

        public static bool TestarVazio(Form formulario)
{
bool _return = false;
Control[] controle = new Control[formulario.Controls.Count];
for (int i = 0; i < controle.Length; i++)
{
controle[i] = formulario.Controls[i];
}
Array.Reverse(controle);
for (int i = 0; i < controle.Length; i++)
{
if (controle[i] is TextBox)
{
if (controle[i].Text == string.Empty && controle[i].Tag != null && controle[i].TabStop == true)
{
MessageBox.Show([Ô]Obrigatório preenchimento do campo <[Ô] + controle[i].Tag.ToString() + [Ô]>[Ô], [Ô]Campo <[Ô] + controle[i].Tag.ToString() + [Ô]> obrigatório[Ô], MessageBoxButtons.OK, MessageBoxIcon.Warning);
controle[i].Focus();
_return = true;
break;
}
}
}
return _return;
}


Para usar: (no botão [Ô]Salvar[Ô], por exemplo, antes de salvar)

if (TestarVazio(this) == true) { return; }


Eu escrevo na Tag do controle que será validado o nome do campo, aí depois de verificar se o controle é do tipo que eu quero verificar, verifico também se o controle está vazio, se a Tag dele é diferente de nula e se o TabStop dele é [Ô]true[Ô], quer dizer que será um campo a validar. Aí eu dou a mensagem, utilizando a Tag dele para mostrar na mensagem o campo que está com erro. (Veja a imagem).
Espero que tenham gostado da ideia.

MILTONSILVA94 18/03/2016 09:16:12
#459419
Poisé ACCIOLLY a alternativa que mais chegou perto da que preciso é a:

Public Function RotinaSalvar()

Dim controle As Control

For Each controle In Me.Controls
If TypeOf controle Is TextBox Then
If controle.text = [Ô][Ô] And controle.Tag <> [Ô]x[Ô] Then
controle.SetFocus
MensagemDoSistema [Ô]Campo não informado, verifique antes de salvar![Ô]
End If
End If
Next
End Function

Porém ele percorre o foco de forma aleatória...
MILTONSILVA94 18/03/2016 09:18:36
#459420
PERCIFILHO esta rotina é VB6?

MILTONSILVA94 18/03/2016 09:20:46
#459421
Obrigado OMAR2011 pela sugestão.
MILTONSILVA94 18/03/2016 09:22:56
#459422
Obrigado IRENKO pela sugestão
PERCIFILHO 18/03/2016 10:47:27
#459424
Citação:

PERCIFILHO esta rotina é VB6?



Não é VB6, é C#. Desculpe amigo, estou tão acostumado já com o C# que nem reparei que o seu tópico é VB6.
Como não me lembro de quase nada do VB6, talvez algum colega consiga te [Ô]traduzir[Ô], se a rotina te servir.
MILTONSILVA94 19/03/2016 12:33:09
#459488
Deixo aqui a sugestão que deu certo no VB6 e resolveu meu problema:

Private Sub RotinaSalvar()
Dim qtd As Integer
Dim ArrayControles(24) As Control
Dim i As Integer

[ô]Para contar total de campos neste formulário
[ô]MsgBox Count

[ô]Início da rotina que valida os campos em branco
qtd = Me.Controls.Count

For i = 0 To Me.Controls.Count - 1
Set ArrayControles(i) = Me.Controls(qtd - 1)
qtd = qtd - 1
Next i

For i = 0 To Me.Controls.Count - 1
If TypeOf ArrayControles(i) Is TextBox Then
If ArrayControles(i).text = [Ô][Ô] Then
MensagemDoSistema [Ô]Campo obrigatório em branco, verifique antes de salvar[Ô]
ArrayControles(i).SetFocus
Exit Sub
End If
End If
Next i
End Sub

Obrigado a todas as sugestões deste tópico.
Página 5 de 5 [48 registro(s)]
Tópico encerrado , respostas não são mais permitidas