ARRAYS EM VB.NET

USUARIO.EXCLUIDOS 05/01/2005 18:59:06
#58873
Olá.. Eu tà' criando um programinha no VB.NET e gostaria de automatizar o código...

Gostaria de saber se podem me ajudar????

Esse programa tem 20 campos de texto e esses campos tem "Name" da seguinte forma:

[txt-color=#ff0000]
txtDado1
txtDado2
txtDado3
.......
txtDado20
[/txt-color]

Tenho também um HScroolBar. Esse ScroolBar funciona assim: Quando seu valor é igual a 5, por exemplo, todos os campos de txtDados1 até txtDados 5 são visíveis e o resto fica invisível.... Quando o valor do ScroolBar é 18, por exemplo, todos os campos de texto de 1 até 18 são visíveis e o txtDados19 e o txtDados20 são invísiveis...

Meu código é mais ou menos assim:

[txt-color=#ff0000]
Private Sub hsbMedicoes_Change()

lblNumeroMedicoes.Text = Str(hsbMedicoes.Value)

If hsbMedicoes.Value < 20 Then
txtDado20.Visible = False
Else
txtDado20.Visible = True
End If

If hsbMedicoes.Value < 19 Then
txtDado19.Visible = False
Else
txtDado19.Visible = True
End If

If hsbMedicoes.Value < 18Then
txtDado18Visible = False
Else
txtDado18Visible = True
End If

End Sub
[/txt-color]

Você percebe a sequência do código... Ele é a mesma coisa para todos os valores que o Scroll pode assim, a única coisa que muda são os números dos campos de texto...

Queria saber se vc sabe como automatizar isso???

Desde já, Muito OBRIGADO
USUARIO.EXCLUIDOS 05/01/2005 20:43:46
#58885
O Programa é esse, está funcionando blz... Porém eu gostaria de aprender a diminuir esse código...

Erro Aleatório 1.0
LCSD 05/01/2005 21:37:37
#58890
Diondu

Coloque um Array de TextBox, então ficaria txtDado(0), txtDado(1)...... txtDAdo(20) e o código:


' --- Esconde todos ---------
For i = 0 to 20
txtDado(i).Visible = False
Next

' --- Deixa apenas 1 visível -----
txtDado( hsbMedicoes.Value).Visible = True


Teste e veja se resolve
[s50]

USUARIO.EXCLUIDOS 05/01/2005 22:38:02
#58891

KPELLARJR,

Muito obrigado pela ajuda...

Eu não entendo muito bem como funciona esse negócio de Array de TextBox não... Teria como vc explicar mais ou menos como que eu tenho de fazer, pois coloquei esse seu código e quando bando Debugar, dá o seguinte erro:

Name 'txtDado' is not declared.

Eu preciso alterar alguma propriedade dos TextBox pra funcionar???

Desde já, OBRIGADO
USUARIO.EXCLUIDOS 06/01/2005 00:57:52
#58905
Cada Textbox tem uma propriedade chama INDEX ela serve para identificar através de um número os objetos com o mesmo nome contidos no form, txtDado é o nome do objeto e (i) é a váriavel que está no loop for que é incrementada de 1 em 1 começando de 0 até 20, então cada vez que ele fizer isso:

txtDado(i).Visible = False

O (i) vai valer um número que é o número que vc coloca no INDEX dos objetos com o mesmo nome.

Espero ter ajudado,

RGAFFO
LCSD 06/01/2005 07:08:26
#58909
Diondu

O que o RGaffo escreveu é a teoria do que passei na prática e vamos complementar a idéia. Renomeie TODOS os TextBox para txtDado, um de cada vez, assim quando for renomear o txtDado0, altere no NAME para txtDado e o Index = 0, no txtDado1 para txtDado e Index = 1 e assim até terminar a todos.

O código que postei acima substituirá todas aquelas linhas.
[s50]
USUARIO.EXCLUIDOS 06/01/2005 16:46:05
#59056
Olá Gente... Acho que entendi o que vc explicaram, porém não consigo encontrar essa propriedade Index.

Quando eu usava o VB6 lembro de ter visto essa propriedade, mas agora no VB.NET não consigo a encontrar...

Essas são as propriedades que eu encontro aqui no meu VB.NET. Será que o nome da propriedade Index mudou???

USUARIO.EXCLUIDOS 06/01/2005 17:43:32
#59071
Agora acho que eu só preciso saber onde está essa propriedade INDEX. O mais parecido que encontrei foi o TabIndex...

Me ajudem, por favor...
USUARIO.EXCLUIDOS 07/01/2005 20:20:56
#59324
Alguém poderia me dizer qual o novo nome da propriedade INDEX no VB.NET e como eu faço para utilizá-la....

Desde já, MUITO OBRIGADO PELA AJUDA....
Tópico encerrado , respostas não são mais permitidas