ROTINA FOR EACH

IRENKO 25/08/2009 17:02:52
#320936
If BotaoAcionado = 1 And Bandeira = [Ô]Atuador[Ô] Then

For Each ctl In Controls
If ctl.Tag = [Ô]X[Ô] Or ctl.Tag = [Ô]PXx[Ô] Or ctl.Tag = [Ô]PX[Ô] Or ctl.Tag = [Ô]Posicao[Ô] Or ctl.Tag = [Ô]c[Ô] Then
[ô]DoEvents
ctl.Enabled = False
End If
Next
End If
End If

Com as linhas acima eu gasto mais ou menos 30 segundos para desabilitar 80 textbox dinamicos baseado nos seus Tag[ô]s. Se a quantidade de TextBox for menor ou seja, 30 não acontece a demora. Se eu uso o DoEvents so mascara dando erro se eu saio do Form.

Erro:

The Control is no longer usable because it has been removed from the controls collection.

Creio que não dá tenpo do codigo percorrer todos esse controles. Alguem sabe como contornar isso?
RICART 25/08/2009 18:46:29
#320945
Resposta escolhida
O que pode estar ocorrendo é que a sua rotina está percorrendo todos os controles do form, não apenas os textbox's.
Vc pode tratar isso colocando uma condição para que faça a verificação da Tag somente dos TextBox's:
Em vb.net utilizamos assim:
Acho que deve funcionar em vb6.


For Each ctl In Controls
If TypeOf ctl Is TextBox then
If ctl.Tag = [Ô]X[Ô] Or ctl.Tag = [Ô]PXx[Ô] Or ctl.Tag = [Ô]PX[Ô] Or ctl.Tag = [Ô]Posicao[Ô] Or ctl.Tag = [Ô]c[Ô] Then
ctl.Enabled = False
End If
End If
Next
Tópico encerrado , respostas não são mais permitidas